本站消息

  本站每日ip已达10000,出租广告位,位置价格可谈,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-08(70)

2019-09(94)

2019-10(12)

2019-11(4)

2019-12(9)

leetcode 88 合并两个有序数组

发布于2020-05-17 19:00     阅读(523)     评论(0)     点赞(25)     收藏(4)


class Solution(object):
    def merge(self,nums1,m,nums2,n):
        p1 = m - 1
        p2 = n - 1
        p = m + n - 1
        while p1 >= 0 and p2 >= 0:
            if nums1[p1] < nums2[p2]:
                nums1[p] = nums2[p2]
                p2 -= 1
            else:
                # nums1[p] = nums1[p1]
                nums1[p], nums1[p1] = nums1[p1], nums1[p] # swap更容易理解
                p1 -= 1
            p -= 1
        nums1[:p2+1] = nums2[:p2+1]
        # 因为nums1中比nums2大的都往后移了
        # 所以如果nums2中有剩余,可以直接放在nums1中
        return nums1

nums1 = [2,4,6,0,0,0,0]
m = 3
nums2 = [1,3,5,7]
n = 4
s = Solution()
print(s.merge(nums1,m,nums2,n))

注:
1.从后往前索引,可以避免需要额外的temp变量存储merge之后的结果,减小了空间复杂度。



所属网站分类: 技术文章 > 博客

作者:378273283782232

链接: https://www.pythonheidong.com/blog/article/377318/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)