美文网首页
01_合并两个有序数组

01_合并两个有序数组

作者: butters001 | 来源:发表于2019-11-01 14:11 被阅读0次
    # 气死面试官的答案
    class Solution(object):
        def merge(self, nums1, m, nums2, n):
            """
            :type nums1: List[int]
            :type m: int
            :type nums2: List[int]
            :type n: int
            :rtype: None Do not return anything, modify nums1 in-place instead.
            """
            nums1[m:m + n] = nums2
            # for i in range(n):
            #     nums1[m] = nums2[i]
            #     m += 1
            nums1.sort()
    
    
    # leetcode 最优解
    class Solution2(object):
        def merge(self, nums1, m, nums2, n):
            """
            :type nums1: List[int]
            :type m: int
            :type nums2: List[int]
            :type n: int
            :rtype: None Do not return anything, modify nums1 in-place instead.
            """
            while m > 0 and n > 0:
                if nums1[m - 1] >= nums2[n - 1]:
                    nums1[m + n - 1] = nums1[m - 1]
                    m -= 1
                else:
                    nums1[m + n - 1] = nums2[n - 1]
                    n -= 1
            if n > 0:
                nums1[:n] = nums2[:n]
    
    
    nums1 = [1, 2, 3, 0, 0, 0, 0, 0]
    m = 3
    nums2 = [2, 5, 6]
    n = 3
    s = Solution2()
    s.merge(nums1, m, nums2, n)
    print(nums1)
    # [1, 2, 2, 3, 5, 6, 0, 0]
    
    

    相关文章

      网友评论

          本文标题:01_合并两个有序数组

          本文链接:https://www.haomeiwen.com/subject/cubfbctx.html