Skip to content

Commit 46bd910

Browse files
authored
Create Image Overlap.java
1 parent 1e059b4 commit 46bd910

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

Medium/Image Overlap.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public int largestOverlap(int[][] img1, int[][] img2) {
3+
List<Pair<Integer, Integer>> nonZeroCoordinates1 = getNonZeroCoordinates(img1);
4+
List<Pair<Integer, Integer>> nonZeroCoordinates2 = getNonZeroCoordinates(img2);
5+
int maxOverlap = 0;
6+
Map<Pair<Integer, Integer>, Integer> groupCount = new HashMap<>();
7+
for (Pair<Integer, Integer> c1 : nonZeroCoordinates1) {
8+
for (Pair<Integer, Integer> c2 : nonZeroCoordinates2) {
9+
Pair<Integer, Integer> vector = new Pair<Integer, Integer>(
10+
c2.getKey() - c1.getKey(), c2.getValue() - c1.getValue());
11+
groupCount.put(vector, groupCount.getOrDefault(vector, 0) + 1);
12+
maxOverlap = Math.max(maxOverlap, groupCount.get(vector));
13+
}
14+
}
15+
return maxOverlap;
16+
}
17+
18+
private List<Pair<Integer, Integer>> getNonZeroCoordinates(int[][] arr) {
19+
List<Pair<Integer, Integer>> coordinates = new ArrayList<>();
20+
for (int i = 0; i < arr.length; i++) {
21+
for (int j = 0; j < arr[0].length; j++) {
22+
if (arr[i][j] == 1) {
23+
coordinates.add(new Pair(i, j));
24+
}
25+
}
26+
}
27+
return coordinates;
28+
}
29+
}

0 commit comments

Comments
 (0)