1536. 排布二进制网格的最少交换次数
状态:AC
代码:
class Solution {public:int minSwaps(vector<vector<int>>& grid) {int n = grid.size();int raw;int ans = 0;vector<int> arr(n,0);for(int i = 0;i<n;i++){raw = 0;for(int j = n-1;j>=0;j--){if(grid[i][j] == 0){raw++;}else{break;}}arr[i] = raw;}for(int i = 0;i<n;i++){if(arr[i] >= n-1-i) continue;int j;for(j = i+1;j<n;j++){if(j == n-1 && arr[j] < n-1-i)return -1;if(arr[j] >= n-1-i)break;}for(;j>i;j--){swap(arr[j],arr[j-1]);ans++;}}return ans;}};
