题目
给定两个有序整数数组 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]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一(暴力法)
- 思路
将nums2替换nums1中的0后,直接排序 - 代码
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
nums1[m:m+n]=nums2
nums1.sort()
- 结果
解法二(双指针法)
- 思路
将nums2替换nums1中的0后
用两个指针对nums1中数字进行调整排序 - 代码
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
nums1[m:m+n]=nums2
p1,p2=0,m
while p1<m+n:
while p2<m+n and nums1[p1]>=nums1[p2]:
temp=nums1[p2]
nums1[p1+1:p2+1]=nums1[p1:p2]
nums1[p1]=temp
p2+=1
p1+=1
if p2>m+n:
break
p1+=1
- 结果