88 合并两个有序数组
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.
"""
if m == 0:
nums1[:] = nums2
p = m+n-1
p1 = m-1
p2 = n-1
while p>=0 and p2>=0 and p1>=0:
if nums2[p2] > nums1[p1]:
nums1[p] = nums2[p2]
p2 -= 1
else:
nums1[p] = nums1[p1]
p1 -= 1
p -= 1
if p2 >= 0:
while p>=0:
nums1[p] = nums2[p2]
p -= 1
p2 -= 1
89 格雷编码
class Solution:
def grayCode(self, n) :
if n == 0:
return [0]
res = []
def back(now, x):
if len(now) == n:
res.append(int(now, 2))
elif x == 0:
back(now + '0', 0)
back(now + '1', 1)
else:
back(now + '1', 0)
back(now + '0', 1)
back('', 0)
return res
104 二叉树的最大深度
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root: return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) +1