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 k5
for (int i = k; i < n; i++) { // start from row k looking downward6
for (int j = k + 1; j < n; j++) { // all cell after and at k + 1 must be 07
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 row10
int[] tmp = grid[m - 1]; // swap it into the correct row - row k11
grid[m - 1] = grid[m];17
if (i == n - 1) // i reaches the end and did not find a fitting row, return -1