-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathSpiral Matrix III.py
35 lines (33 loc) · 1.07 KB
/
Spiral Matrix III.py
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
28
29
30
31
32
33
34
35
class Solution:
def spiralMatrixIII(self, rows: int, cols: int, rStart: int, cStart: int) -> List[List[int]]:
ans = [[rStart, cStart]]
val = 1
i, j = rStart, cStart
def is_valid(i, j):
if 0 <= i < rows and 0 <= j < cols:
return True
return False
while True:
if len(ans) == rows * cols:
return ans
# go right val times
for _ in range(val):
j+=1
if is_valid(i,j):
ans.append([i,j])
# go bottom val times
for _ in range(val):
i+=1
if is_valid(i,j):
ans.append([i,j])
# go left val+1 times
for _ in range(val+1):
j-=1
if is_valid(i,j):
ans.append([i,j])
# go up val+1 times
for _ in range(val+1):
i-=1
if is_valid(i,j):
ans.append([i,j])
val+=2