LeetCode演算法題59 螺旋矩陣 II解析

2021-09-09 05:42:38 字數 1649 閱讀 5884

給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。

示例:

輸入: 3

輸出:[

[ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]

這個題和54題螺旋矩陣基本思路一樣,只需要先設定上下左右邊界,然後初始化乙個n*n的矩陣,然後設定乙個初始值為1的計數器,每次填乙個數之後都自加就可以,所以其實大迴圈結束的條件可以是這個計數器的值達到n

2n^2

n2,也可以是邊界重疊。**中是用了邊界重疊作為結束條件。

c++源**:

class

solution

up++

;for

(int i=up;i<=down;i++

) right--

;for

(int j=right;j>=left;j--

) down--

;for

(int i=down;i>=up;i--

) left++;}

return res;}}

;

python3源**:

class

solution

:def

generatematrix

(self, n)

:"""

:type n: int

:rtype: list[list[int]]

"""res =[[

0for i in

range

(n)]

for j in

range

(n)]

up =

0; down = n-

1; left =

0; right = n-1;

k =1;

while up <= down and left <= right:

for j in

range

(left, right+1)

: res[up]

[j]= k

k +=

1 up +=

1for i in

range

(up, down+1)

: res[i]

[right]

= k k +=

1 right -=

1for j in

range

(right, left-1,

-1):

res[down]

[j]= k

k +=

1 down -=

1for i in

range

(down, up-1,

-1):

res[i]

[left]

= k k +=

1 left +=

1return res

螺旋方陣(Leetcode第59題)

問題描述 螺旋矩陣 include include int main int n scanf d n int i,c 0,r 0,num 0,cnt n 2 int a n n while cnt for i r i r 1 i a n r i num 減減方法 思路 最開始我做題的想法不是這樣的,...

LeetCode筆記 59螺旋矩陣

題目 給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3輸出 1,2,3 8,9,4 7,6,5 思路 直接看了網上大神的 和leetcode上最快的 先把這兩個程式看懂。public class solution else if j n...

leetcode 59 螺旋矩陣

題目要求 按照順時針螺旋順序 構建乙個n n的螺旋矩陣 思路 參照之前的54題輸出螺旋矩陣的思路 將單圈拆開為四個部分。每個部分迴圈的長度是相同的。單圈迴圈完之後,起始座標向右下移乙個單位,單次迴圈長度減二。對於偶數階矩陣,正常結束。對於奇數階矩陣,因為迴圈長度會減到0,需要手動加入最後最中間的乙個...