spiral matrix ii
This commit is contained in:
parent
1a09f21487
commit
7129351ed4
19
0059_spiral-matrix-ii/README.md
Normal file
19
0059_spiral-matrix-ii/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
Given a positive integer `n`, generate an `n x n` `matrix` filled with elements from `1` to `n2` in spiral order.
|
||||
|
||||
**Example 1:**
|
||||
|
||||
![](https://assets.leetcode.com/uploads/2020/11/13/spiraln.jpg)
|
||||
|
||||
Input: n = 3
|
||||
Output: [[1,2,3],[8,9,4],[7,6,5]]
|
||||
|
||||
|
||||
**Example 2:**
|
||||
|
||||
Input: n = 1
|
||||
Output: [[1]]
|
||||
|
||||
|
||||
**Constraints:**
|
||||
|
||||
* `1 <= n <= 20`
|
41
0059_spiral-matrix-ii/python3/amols_approach.py
Normal file
41
0059_spiral-matrix-ii/python3/amols_approach.py
Normal file
@ -0,0 +1,41 @@
|
||||
class Solution:
|
||||
def generateMatrix(self, n: int) -> List[List[int]]:
|
||||
if n==0: return []
|
||||
if n==1: return [[1]]
|
||||
|
||||
matrix = [[0]*n for _ in range(n)]
|
||||
counter = 1
|
||||
|
||||
rows, cols = n, n
|
||||
top, down = 0, rows-1
|
||||
left, right = 0, cols-1
|
||||
dir = 0
|
||||
|
||||
while top<=down and left<=right:
|
||||
if dir==0:
|
||||
for i in range(left, right+1):
|
||||
matrix[top][i] = counter
|
||||
counter+=1
|
||||
top+=1
|
||||
|
||||
elif dir==1:
|
||||
for i in range(top, down+1):
|
||||
matrix[i][right] = counter
|
||||
counter+=1
|
||||
right-=1
|
||||
|
||||
elif dir==2:
|
||||
for i in range(right, left-1, -1):
|
||||
matrix[down][i] = counter
|
||||
counter += 1
|
||||
down-=1
|
||||
|
||||
elif dir==3:
|
||||
for i in range(down, top-1, -1):
|
||||
matrix[i][left] = counter
|
||||
counter += 1
|
||||
left+=1
|
||||
|
||||
dir = (dir+1)%4
|
||||
|
||||
return matrix
|
40
0059_spiral-matrix-ii/python3/solution.py
Normal file
40
0059_spiral-matrix-ii/python3/solution.py
Normal file
@ -0,0 +1,40 @@
|
||||
import math
|
||||
|
||||
class Solution:
|
||||
def generateMatrix(self, n: int) -> List[List[int]]:
|
||||
m = [[None] * n for _ in range(n)]
|
||||
val = 1
|
||||
|
||||
for i in range(math.ceil(n / 2)):
|
||||
# Top
|
||||
ri, ci = i, i
|
||||
while ci < n - i:
|
||||
m[ri][ci] = val
|
||||
val += 1
|
||||
ci += 1
|
||||
ci -= 1
|
||||
|
||||
# Right
|
||||
ri, ci = ri + 1, ci
|
||||
while ri < n - i:
|
||||
m[ri][ci] = val
|
||||
val += 1
|
||||
ri += 1
|
||||
ri -= 1
|
||||
|
||||
# Bottom
|
||||
ri, ci = ri, ci - 1
|
||||
while ci >= i:
|
||||
m[ri][ci] = val
|
||||
val += 1
|
||||
ci -= 1
|
||||
ci += 1
|
||||
|
||||
# Left
|
||||
ri, ci = ri - 1, ci
|
||||
while ri > i:
|
||||
m[ri][ci] = val
|
||||
val += 1
|
||||
ri -= 1
|
||||
|
||||
return m
|
Loading…
Reference in New Issue
Block a user