题目(#88):
合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
语言:python 3,本文只讲2种个人认为比较好的方法,欢迎交流。
方法一:采用python列表排序函数sort()进行排序
思路:
题目给的有序数组1,后3位元素为0,输出要求数组中没有“0”元素。因此把数组2赋值给数组1后3位,然后采用sort()对数组1排序,代码如下:
class Solution:
def merge(self, nums1, m, nums2, n):
"""
Do not return anything, modify nums1 in-place instead.
"""
nums1[m: m+n] = nums2[: n]
nums1.sort()
方法二:因为是有序数组,从2数组的尾部开始排序
思路:
从2数组的尾部数进行比较
class Solution:
def merge(self, nums1, m, nums2, n):
"""
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]