Minimum Swaps to Arrange a Binary Grid LeetCode solution in Python
1# Runtime: 1405 ms (Top 5.77%) | Memory: 15.2 MB (Top 23.08%)2class Solution:3def minSwaps(self, grid) -> int:4n = len(grid)5max_right = [-1] * n6for r, row in enumerate(grid):7for c in range(n - 1, -1, -1):8if row[c] == 1:9max_right[r] = c10break11if all(v <= i for i, v in enumerate(sorted(max_right))):12swaps = 013i = 014while i < n:15while i < n and max_right[i] <= i:16i += 117if i == n:18break19j = i20while j < n and max_right[j] > i:21j += 122swaps += j - i23max_right[i], max_right[i + 1 : j + 1] = (max_right[j], max_right[i:j])24i += 125return swaps26return -1