【leetcode】88.合并两个有序数组

【leetcode】88.合并两个有序数组_第1张图片

题目意思没弄明白,走了很多弯路。

没有考虑: 

【leetcode】88.合并两个有序数组_第2张图片

 [1]

解题:

超级厉害的方法:
        #先合并,在重新排序,此题不需要返回
        nums1[m:m+n]=nums2[:n]
        nums1.sort()

普通方法:

归并排序中的merge操作:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

【leetcode】88.合并两个有序数组_第3张图片

题目中的条件两个有序整数数组,可以直接比较nums1和nums2元素的大小,然后根据大小加入到nums1的末尾,最后还要考虑nums2的元素是否还有剩余即可。

while m > 0 and n > 0:
    if nums1[m - 1] >= nums2[n - 1]:
        nums1[m + n - 1] = nums1[m - 1]
        m = m - 1
    else:
        nums1[m + n - 1] = nums2[n - 1]
        n = n - 1
if n > 0:
    nums1[:n] = nums2[:n]
print(nums1)

你可能感兴趣的:(leetcode,leetcode解题记录)