Minimum Swaps to Arrange a Binary Grid LeetCode solution in Java

1
class Solution {
2
public int minSwaps(int[][] grid) {
3
int n = grid.length, ans = 0, cur = 0;
4
for (int k = 0; k < n - 1; k++) { // looking for the fitting row for row k
5
for (int i = k; i < n; i++) { // start from row k looking downward
6
for (int j = k + 1; j < n; j++) { // all cell after and at k + 1 must be 0
7
if (grid[i][j] == 1) break;
8
if (j < n - 1) continue;
9
for (int m = i; m > k; m--) { // j == n - 1 here, so we found a valid row
10
int[] tmp = grid[m - 1]; // swap it into the correct row - row k
11
grid[m - 1] = grid[m];
12
grid[m] = tmp;
13
ans++;
14
}
15
i = n;
16
}
17
if (i == n - 1) // i reaches the end and did not find a fitting row, return -1
18
return -1;
19
}
20
}
21
return ans;
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0