LeetCode50题第九天

LeetCode第88题: 合并两个有序数组

  1. 使用双指针法
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.
        """
        mid = []
        i = 0
        j = 0
        t = 0
        length1 = len(nums1)
        length2 = len(nums2)
        while i < m and j < n:
            if  nums1[i] < nums2[j]:
                mid.append(nums1[i])
                i += 1
            else:
                mid.append(nums2[j])
                j += 1
        if i != m:
            mid += nums1[i:m]
        if j != n:
            mid += nums2[j:n]
        for i in range(0, len(mid)):
            nums1[i] = mid[i]

复杂度分析: 时间复杂度O(n+m), 空间复杂度O(n+m)

LeetCode第89题: 格雷编码

  1. 每次将之前的数组逆序再加上一定的偏移值, 在于原数组相加即可
class Solution:
    def grayCode(self, n: int) -> List[int]:
        if n == 0:
            return [0]
        result = [0, 1]
        i = 2
        while i <= n:
            num = 2 ** (i - 1)
            mid = result[:]
            for j in range(0, len(mid)):
                mid[j] += num
            result += mid[::-1]
            i += 1
        return result

LeetCode第104题: 二叉树的最大深度

  1. 使用递归
# 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 (root == None):
            return 0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值