zoukankan      html  css  js  c++  java
  • 【leetcode】835. Image Overlap

    题目如下:

    解题思路:抛开移动的过程只看移动完成的结果,记图片左上角为顶点,正方形边长为board,要使得两个图片要有重叠,那么一定其中一张图片的顶点和另外一张图片的某一个点重合。假设图片A的顶点A(0,0)和图片B的其中一个点B(x,y)重合,那么A与B重合的区域就是A(0,0) -> A(board-x,board-y) ,B(x,y) -> B(board,board) ,计算A与B的重合部分中每个点都为1的个数就是A(0,0)与B(x,y)重合时候能得到的overlap。最后计算出B中所有点与A(0,0)重合和A中所有点与B(0,0)重合的overlap,求出最大值即可。

    代码如下:

    class Solution(object):
        def getOverlap(self,a,b,ax,ay):
            count = 0
            for i in range(ax,len(a)):
                for j in range(ay,len(a[i])):
                    if a[i][j] == b[i-ax][j-ay] == 1:
                        count += 1
            return count
    
        def largestOverlap(self, A, B):
            """
            :type A: List[List[int]]
            :type B: List[List[int]]
            :rtype: int
            """
            res = 0
            board = len(A)
            for i in range(board):
                for j in range(board):
                    res = max(res,self.getOverlap(A,B,i,j))
                    res = max(res, self.getOverlap(B, A, i, j))
            return res
  • 相关阅读:
    小毛驴基本语法
    文本数据IO操作--字符流
    基本IO操作--字节流
    文件指针操作
    文件操作——RandomAccessFile
    Java文件操作——File
    前端修炼-javascript关键字之prototype
    Redux介绍及基本应用
    IOS应用程序生命周期
    EF 只更新部分字段
  • 原文地址:https://www.cnblogs.com/seyjs/p/9805584.html
Copyright © 2011-2022 走看看