LeetCode騰訊精選練習50 第九天

2021-10-16 18:54:11 字數 2000 閱讀 4914

題目88:合併兩個有序陣列

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。

初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。你可以假設 nums1 有足夠的空間(空間大小等於 m + n)來儲存 nums2 中的元素。

題解:

class

solution

:def

merge

(self, nums1: list[

int]

, m:

int, nums2: list[

int]

, n:

int)

->

none

:"""

do not return anything, modify nums1 in-place instead.

"""nums1[:]

=sorted

((nums1[

:m]+ nums2[

:n])

)

執行結果:

題目89:格雷編碼

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。

給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。即使有多個不同答案,你也只需要返回其中一種。

格雷編碼序列必須以 0 開頭。

題解:(還可以考慮位操作)

class

solution

:def

graycode

(self, n:

int)

-> list[

int]

:if n ==0:

return[0

] res =[0

,1]# 末位數字分別為0,1時表示的結果

for i in

range(1

,n):

for num in res[::

-1]:

# 保證與前面只有一位不同

2**i+num)

return res

執行結果:

題目104:二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。

二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明: 葉子節點是指沒有子節點的節點。

題解:

# definition for a binary tree node.

# class treenode:

# def __init__(self, val=0, left=none, right=none):

# self.val = val

# self.left = left

# self.right = right

class

solution

:def

maxdepth

(self, root: treenode)

->

int:

ifnot root:

return

0 self.ans =

0 self._dfs(root,0)

return self.ans

def_dfs

(self, node, level):if

not node:

return

if self.ans < level +1:

self.ans = level +

1 self._dfs(node.left, level +1)

self._dfs(node.right, level +

1)

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