Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit f8c9ccd

Browse files
fix build
1 parent 5b45347 commit f8c9ccd

File tree

1 file changed

+46
-38
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+46
-38
lines changed

src/main/java/com/fishercoder/solutions/_373.java

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,53 @@
77

88
public class _373 {
99

10-
public class Solution {
11-
12-
int[][] dirs = {{0,1},{1,0},{1,1}};
13-
public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
14-
15-
List<List<Integer>> result = new ArrayList<>();
16-
17-
// EDGE CASE
18-
if(nums1==null || nums2==null || nums1.length==0 || nums2.length==0) return result;
19-
20-
// visited array
21-
boolean[][] visited = new boolean[nums1.length][nums2.length];
22-
23-
// Min Heap
24-
PriorityQueue<int[]> pq = new PriorityQueue<>((a,b)->{
25-
return ( a[0]+a[1] ) - ( b[0]+b[1] ) ;
26-
});
27-
28-
int[] temp = new int[]{nums1[0],nums2[0],0,0};
29-
pq.add(temp);
30-
visited[0][0]= true;
31-
32-
while(!pq.isEmpty()){
33-
int[] arr = pq.poll();
34-
List<Integer> ls = new ArrayList<>();
35-
ls.add(arr[0]);ls.add(arr[1]);
36-
result.add(ls);
37-
38-
if(result.size()==k) break;
39-
int i=arr[2],j=arr[3];
40-
41-
for(int[] dir : dirs){
42-
int dx=i+dir[0],dy=j+dir[1];
43-
if(dx<0 || dx>=nums1.length || dy<0 || dy>=nums2.length || visited[dx][dy]) continue;
44-
pq.add(new int[]{nums1[dx],nums2[dy],dx,dy});
45-
visited[dx][dy] = true;
10+
public static class Solution1 {
11+
12+
int[][] dirs = {{0, 1}, {1, 0}, {1, 1}};
13+
14+
public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
15+
16+
List<List<Integer>> result = new ArrayList<>();
17+
18+
// EDGE CASE
19+
if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) {
20+
return result;
21+
}
22+
23+
// visited array
24+
boolean[][] visited = new boolean[nums1.length][nums2.length];
25+
26+
// Min Heap
27+
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> {
28+
return (a[0] + a[1]) - (b[0] + b[1]);
29+
});
30+
31+
int[] temp = new int[]{nums1[0], nums2[0], 0, 0};
32+
pq.add(temp);
33+
visited[0][0] = true;
34+
35+
while (!pq.isEmpty()) {
36+
int[] arr = pq.poll();
37+
List<Integer> ls = new ArrayList<>();
38+
ls.add(arr[0]);
39+
ls.add(arr[1]);
40+
result.add(ls);
41+
42+
if (result.size() == k) {
43+
break;
44+
}
45+
int i = arr[2], j = arr[3];
46+
47+
for (int[] dir : dirs) {
48+
int dx = i + dir[0];
49+
int dy = j + dir[1];
50+
if (dx >= 0 && dx < nums1.length && dy >= 0 && dy < nums2.length && !visited[dx][dy]) {
51+
pq.add(new int[]{nums1[dx], nums2[dy], dx, dy});
52+
visited[dx][dy] = true;
53+
}
54+
}
4655
}
56+
return result;
4757
}
48-
return result;
4958
}
50-
}
5159
}

0 commit comments

Comments
 (0)