質問88:2つの順序付き配列を結合し
ます。2つの順序付き整数配列nums1とnums2を指定します。nums2をnums1にマージして、nums1を順序付き配列にしてください。
nums1とnums2の要素数をそれぞれmとnに初期化します。nums1には、要素をnums2に格納するのに十分なスペース(スペースサイズはm + nに等しい)があると想定できます。
回答:
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:グレイコーディング
グレイコーディングは、2つの連続する値が1桁だけ異なる2進数システムです。
コードの合計桁数を表す負でない整数nが与えられた場合、そのグレイコードシーケンスを出力します。複数の異なる回答がある場合でも、そのうちの1つを返すだけで済みます。
グレイコードシーケンスは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]: # 保证与前面只有一位不同
res.append(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:
if not 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)
演算結果: