835. Image Overlap
Medium
Last updated
Medium
Last updated
You are given two images, img1
and img2
, represented as binary, square matrices of size n x n
. A binary matrix has only 0
s and 1
s as values.
We translate one image however we choose by sliding all the 1
bits left, right, up, and/or down any number of units. We then place it on top of the other image. We can then calculate the overlap by counting the number of positions that have a 1
in both images.
Note also that a translation does not include any kind of rotation. Any 1
bits that are translated outside of the matrix borders are erased.
Return the largest possible overlap.
Example 1:
Example 2:
Example 3:
Constraints:
n == img1.length == img1[i].length
n == img2.length == img2[i].length
1 <= n <= 30
img1[i][j]
is either 0
or 1
.
img2[i][j]
is either 0
or 1
.
這題原本只想得到暴力解,但在討論區看到很棒的方法。雖然時間複雜度還是偏高,但程式碼優美好理解。大家可以點進上面討論區連結,或是看這個影片,講解得非常清楚。
Runtime: 84 ms, faster than 50.00%
Memory Usage: 6.1 MB, less than 50.00%
下方之所以用 i*100+j 來記錄 (x, y) ,而不是用二維陣列或 struct 紀錄是因為題目有限制正方形邊長最大為 30 。