LeetCode騰訊精選練習50 第七天

2021-10-16 12:38:07 字數 2669 閱讀 7365

題目54:螺旋矩陣

給定乙個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

題解:

class

solution

:def

spiralorder

(self, matrix: list[list[

int]])

-> list[

int]

:# 取首行,去除首行後,對矩陣翻轉來建立矩陣

# 再遞迴知道新矩陣為,退出並將取到的資料返回

res =

if matrix ==

:return res

res.extend(matrix[0]

) new_matrix =

[reversed

(i)for i in matrix[1:

]]if new_matrix ==

:return res

r = self.spiralorder(

[i for i in

zip(

*new_matrix)])

res.extend(r)

return res

執行結果:

題目59:螺旋矩陣ⅱ

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

題解:

class

solution

(object):

defgeneratematrix

(self, n)

:"""

:type n: int

:rtype: list[list[int]]

"""array =[[

0for i in

range

(n)]

for j in

range

(n)]

c, j =1,

0while c<=n*n:

# 從左向右

for i in

range

(j, n-j)

: array[j]

[i]= c

c +=

1# 從上往下走

for i in

range

(j+1

, n-j)

: array[i]

[n-j-1]

= c c +=

1# 從右往左走

for i in

range

(n-j-

2, j-1,

-1):

array[n-j-1]

[i]= c

c +=

1# 從下往上走

for i in

range

(n-j-

2, j,-1

):array[i]

[j]= c

c +=

1 j +=

1return array

執行結果:

題目61:旋轉鍊錶

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。

題解:

class

solution

:def

rotateright

(self, head: listnode, k:

int)

-> listnode:

ifnot head:

return

none

orig_head, cnt = head,

1#cnt如果會遍歷到none,就從0開始計數(右開空間),如果遍歷到最後有效位,就從1開始(右閉空間)

while head.

next

:# head遍歷到了最後一位

head, cnt = head.

next

, cnt+

1# cnt若從1開始,且緊跟著head,那麼pointer最終停到哪,cnt就包括到哪。是完全相同的

head.

next

= orig_head # 首尾連線上

step = cnt - k % cnt-

1# 計算有效移動步數

while step >0:

orig_head, step = orig_head.

next

, step -

1

new_head, orig_head.

next

= orig_head.

next

,none

return new_head

執行結果:

Leetcode騰訊精選練習2

原題 兩個大小為 m 和 n 的排序陣列 nums1 和 nums2 請找出兩個排序陣列的中位數並且總的執行時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0 示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 看到這題目自然...

Leetcode騰訊精選練習04

原題 leetcode7 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1...

Leetcode騰訊精選練習05

請你來實現乙個atoi函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組...