Back to Month
MEDIUM 13 Sep 2026 View on LeetCode

835. Image Overlap

</> Solution

class Solution {
    public int largestOverlap(int[][] img1, int[][] img2) {
        int n = img1.length;
        int maxOverlap = 0;
        for (int dy = -(n-1); dy <= n-1; dy++) {
            for (int dx = -(n-1); dx <= n-1; dx++) {
                maxOverlap = Math.max(maxOverlap, countOverlap(img1, img2, dx, dy, n));
            }
        }
        return maxOverlap;
    }
    private int countOverlap(int[][] img1, int[][] img2, int dx, int dy, int n) {
        int count = 0;
        for (int r = 0; r < n; r++) {
            for (int c = 0; c < n; c++) {
                int nr = r + dy;
                int nc = c + dx;
                if (nr >= 0 && nr < n && nc >= 0 && nc < n) {
                    if (img1[r][c] == 1 && img2[nr][nc] == 1) {
                        count++;
                    }
                }
            }
        } 
        return count;
    }
}

TIME COMPLEXITY

O(n⁴)

SPACE COMPLEXITY

O(1)

TOPICS

Array Matrix Simulation