Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Image Overlap

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "835" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

You are given two images, img1 and img2, represented as binary, square matrices of size n x n. A binary matrix has only 0s and 1s 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: Input: img1 = [[1,1,0],[0,1,0],[0,1,0]], img2 = [[0,0,0],[0,1,1],[0,0,1]] Output: 3 Explanation: We translate img1 to right by 1 unit and down by 1 unit. The number of positions that have a 1 in both images is 3 (shown in red). Example 2: Input: img1 = [[1]], img2 = [[1]] Output: 1 Example 3: Input: img1 = [[0]], img2 = [[0]] Output: 0 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.

Explanation

Here's a breakdown of the solution and the code:

  • High-Level Approach:

    • Iterate through all possible translations (shifts) of img2 relative to img1. The possible shifts range from -n+1 to n-1 in both horizontal and vertical directions.
    • For each shift, calculate the overlap between the translated img2 and img1.
    • Keep track of the maximum overlap found so far.
  • Complexity:

    • Runtime: O(n4), where n is the size of the matrix. (We iterate through O(n2) shifts, and for each shift, we perform O(n2) operations to calculate the overlap.)
    • Storage: O(1) (Constant extra space is used.)

Code

    def largestOverlap(img1, img2):
    n = len(img1)
    max_overlap = 0

    for row_shift in range(-n + 1, n):
        for col_shift in range(-n + 1, n):
            overlap = 0
            for i in range(n):
                for j in range(n):
                    row = i + row_shift
                    col = j + col_shift

                    if 0 <= row < n and 0 <= col < n:
                        if img1[i][j] == 1 and img2[row][col] == 1:
                            overlap += 1

            max_overlap = max(max_overlap, overlap)

    return max_overlap

More from this blog

C

Chatmagic blog

2894 posts