-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathq1536.py
More file actions
31 lines (25 loc) · 833 Bytes
/
q1536.py
File metadata and controls
31 lines (25 loc) · 833 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from typing import List
class Solution:
def minSwaps(self, grid: List[List[int]]) -> int:
result = 0
numberOfZeroArray = list()
sideLen = len(grid)
for i in range(sideLen):
numberOfZero = 0
for j in reversed(range(sideLen)):
if grid[i][j] == 0:
numberOfZero += 1
else:
break
numberOfZeroArray.append(numberOfZero)
for i in range(sideLen - 1):
j = sideLen - i - 1
k = i
while k < sideLen and numberOfZeroArray[k] < j:
k += 1
if k == sideLen:
return -1
result += k - i
number = numberOfZeroArray.pop(k)
numberOfZeroArray.insert(i, number)
return result