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%)
2
class Solution:
3
def minSwaps(self, grid) -> int:
4
n = len(grid)
5
max_right = [-1] * n
6
for r, row in enumerate(grid):
7
for c in range(n - 1, -1, -1):
8
if row[c] == 1:
9
max_right[r] = c
10
break
11
if all(v <= i for i, v in enumerate(sorted(max_right))):
12
swaps = 0
13
i = 0
14
while i < n:
15
while i < n and max_right[i] <= i:
16
i += 1
17
if i == n:
18
break
19
j = i
20
while j < n and max_right[j] > i:
21
j += 1
22
swaps += j - i
23
max_right[i], max_right[i + 1 : j + 1] = (max_right[j], max_right[i:j])
24
i += 1
25
return swaps
26
return -1

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0