解題思路 leetcode第五十九題 螺旋矩陣

2021-10-08 20:45:56 字數 891 閱讀 5744

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

示例:輸入: 3

輸出:[

[ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]解題思路:本題採用迴圈賦值的方法,其關鍵之處如何對提前建立的列表進行螺旋遍歷並賦值,本題通過設定兩個標誌位實現遍歷的過程中轉向,程式設定a,b,x,y四個變數,其中a,b代表橫縱座標,x,y代表轉向標誌。當x為0時,則遍歷的過程中橫座標不變,當y為0時,則遍歷的過程中縱座標不變,當x為-1時,遍歷由下往上,當y為-1時,遍歷由左往右。每一輪遍歷通過將x,y加到座標a,b上改變遍歷位置。關於轉向條件的設定,每當遍歷的矩陣的拐角,則將y賦值給x,-x賦值給y,由此實現轉向。**如下:

class

solution

:def

generatematrix

(self, n:

int)

-> list[list[

int]]:

result =[[

0]*n for _ in

range

(n)]

a, b, x, y =0,

0,0,

1for i in

range(1

, n**2+

1): result[a]

[b]= i

if result[

(a+x)

%n][

(b+y)

%n]:

x, y = y,

-x a += x

b += y

return result

提交後,通過。

Leetcode第五十題 Pow x, n

題目 實現 pow x,n 即計算 x 的 n 次冪函式。示例 1 輸入 2.00000,10 輸出 1024.00000 示例 2 輸入 2.10000,3 輸出 9.26100 示例 3 輸入 2.00000,2 輸出 0.25000 解釋 2 2 1 22 1 4 0.25 說明 100.0 ...

解題思路 leetcode第五十六題 合併區間

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。解題思路 本...

解題思路 leetcode第五十四題 螺旋矩陣

題目描述 給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,...