【lc刷题】88 合并两个有序数组 _Day01

博客内容探讨了在LeetCode中88题的解决方案,通过创建新数组实现快速合并两个已排序的数组,并提出疑问关于为何避免直接修改原列表能提升效率,期待专家解答。
摘要由CSDN通过智能技术生成
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 		
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
Input: 		
nums1 = [1,2,3,0,0,0], m = 3 		
nums2 = [2,5,6],       n = 3
Output: 
[1,2,2,3,5,6]
class Solution:
    def merge_01(self, nums1, m, nums2,n):
        """
        nums1: List[int], 
        m: int, 
        nums2: List[int],
        n: int
        Do not return anything, modify nums1 in-place instead.
		#注意,这里是直接在num1上修改
        """
        #申请一个新的变量,把nums1切片放进去。        
        temp_list = nums1[:m]
        #把nums2加在变量后面
        temp_list.extend(nums2)
        #升序排列
        temp_list.sort()
        #删除原nums1中的数据,把新变量的值放进去
        nums1.clear()
        nums1.extend(temp_list)
   
   #后面02/03/04都是直接在nums1上改     
    def merge_02(self, nums1, m, nums2,n):
        """
        Do not return anything, modify nums1 in-place instead.
        """    
        #把原有nums1切片
        #注意:如果写成nums1= nums1[:m]是没有更改原有的nums1。
        nums1[:] = nums1[:m]
        nums1.extend(nums2)
        nums1.sort()
        
    def merge_03(self, nums1, m, nums2,n):
        """
        Do not return anything, modify nums1 in-place instead.
        """           
        #直接在切片原有nums1,后面加nums2
        nums1[m:m+n] = nums2[:n]
        nums1.sort()
        
    def merge_04(self, nums1, m, nums2,n):   
    	#切片nums1,切片nums2,合并,排序,然后放入原有nums1的切上
        nums1[:m+n] = sorted(nums1[:m] + nums2[:n] )

result

看来重新申请个变量搞完了再扔回去比直接在原列表里改要快。
呃,理论知识薄弱,只会用,求大神讲解为啥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值