給定乙個正整數 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,需要手動加入最後最中間的乙個...