给定两个有序整数数组 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] )
看来重新申请个变量搞完了再扔回去比直接在原列表里改要快。
呃,理论知识薄弱,只会用,求大神讲解为啥。