Skip to content

Commit 3f445fe

Browse files
refactor 373
1 parent 8d33bd6 commit 3f445fe

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
@@ -32,52 +32,60 @@
3232
3333
*/
3434
public class _373 {
35+
public static class Solution1 {
3536

36-
final int[][] neighbors = new int[][]{{0, 1}, {1, 0}};
37+
final int[][] neighbors = new int[][] {{0, 1}, {1, 0}};
3738

38-
public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) {
39-
List<int[]> result = new ArrayList<>();
40-
if (nums1 == null || nums2 == null || k == 0 || nums1.length == 0 || nums2.length == 0) {
41-
return result;
42-
}
43-
Queue<Pair> meanHeap = new PriorityQueue<>();
44-
meanHeap.offer(new Pair(0, 0, nums1[0] + nums2[0]));
45-
boolean[][] visited = new boolean[nums1.length][nums2.length];
46-
visited[0][0] = true;//we start form (0,0), so mark it as visited
47-
while (k > 0 && !meanHeap.isEmpty()) {
48-
Pair pair = meanHeap.poll();
49-
result.add(new int[]{nums1[pair.row], nums2[pair.col]});
50-
k--;
51-
for (int[] neighbor : neighbors) {
52-
int nextRow = pair.row + neighbor[0];
53-
int nextCol = pair.col + neighbor[1];
54-
if (nextRow < 0 || nextCol < 0 || nextRow >= nums1.length || nextCol >= nums2.length || visited[nextRow][nextCol]) {
55-
continue;
39+
public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) {
40+
List<int[]> result = new ArrayList<>();
41+
if (nums1 == null
42+
|| nums2 == null
43+
|| k == 0
44+
|| nums1.length == 0
45+
|| nums2.length == 0) {
46+
return result;
47+
}
48+
Queue<Pair> meanHeap = new PriorityQueue<>();
49+
meanHeap.offer(new Pair(0, 0, nums1[0] + nums2[0]));
50+
boolean[][] visited = new boolean[nums1.length][nums2.length];
51+
visited[0][0] = true;//we start form (0,0), so mark it as visited
52+
while (k > 0 && !meanHeap.isEmpty()) {
53+
Pair pair = meanHeap.poll();
54+
result.add(new int[] {nums1[pair.row], nums2[pair.col]});
55+
k--;
56+
for (int[] neighbor : neighbors) {
57+
int nextRow = pair.row + neighbor[0];
58+
int nextCol = pair.col + neighbor[1];
59+
if (nextRow < 0
60+
|| nextCol < 0
61+
|| nextRow >= nums1.length
62+
|| nextCol >= nums2.length
63+
|| visited[nextRow][nextCol]) {
64+
continue;
65+
}
66+
visited[nextRow][nextCol] = true;
67+
meanHeap.offer(new Pair(nextRow, nextCol, nums1[nextRow] + nums2[nextCol]));
5668
}
57-
visited[nextRow][nextCol] = true;
58-
meanHeap.offer(new Pair(nextRow, nextCol, nums1[nextRow] + nums2[nextCol]));
5969
}
60-
}
61-
6270

63-
return result;
64-
}
71+
return result;
72+
}
6573

66-
class Pair implements Comparable<Pair> {
67-
int row;
68-
int col;
69-
int sum;
74+
class Pair implements Comparable<Pair> {
75+
int row;
76+
int col;
77+
int sum;
7078

71-
public Pair(int row, int col, int sum) {
72-
this.row = row;
73-
this.col = col;
74-
this.sum = sum;
75-
}
79+
public Pair(int row, int col, int sum) {
80+
this.row = row;
81+
this.col = col;
82+
this.sum = sum;
83+
}
7684

77-
@Override
78-
public int compareTo(Pair that) {
79-
return this.sum - that.sum;
85+
@Override
86+
public int compareTo(Pair that) {
87+
return this.sum - that.sum;
88+
}
8089
}
8190
}
82-
8391
}

0 commit comments

Comments
 (0)