khoadz
Senior Member
Java:
class Solution {
public int minSwaps(int[][] grid) {
int n = grid[0].length;
int[] maxRight = new int[n];
int count = 0;
for (int i = 0; i < n; i++) {
int[] row = grid[i];
int rightMost = -1;
for (int j = 0; j < n; j++) {
if (row[j] == 1) {
rightMost = j;
}
}
maxRight[i] = rightMost;
}
for (int i = 0; i < n - 1; i++) {
int target = -1;
for (int j = i; j < n; j++) {
if (maxRight[j] <= i) {
target = j;
break;
}
}
if (target == -1) return -1;
while (target > i) {
int temp = maxRight[target];
maxRight[target] = maxRight[target - 1];
maxRight[target - 1] = temp;
count++;
target--;
}
}
return count;
}
}
)
