LeetCodeTencent注目の演習50-Day9

質問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)

演算結果:
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_44315884/article/details/112874468