题目描述
https://leetcode-cn.com/problems/merge-sorted-array/
思路题解
使用三个指针i,j,k:i指向nums1存在有效数据的结尾,j指向nums2存在有效数据的结尾,k指向nums1结尾。
从后往前遍历,谁大谁放在nums[k]上,最后当一方放完了的时候,在把剩余的存入(只考虑i全放完j没有放完的情况)
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
i,j,k=m-1,n-1,len(nums1)-1
while i>=0 and j>=0:
if nums1[i]>nums2[j]:
nums1[k]=nums1[i]
i-=1
else:
nums1[k]=nums2[j]
j-=1
k-=1
if i==-1:
while k>=0:
nums1[k]=nums2[j]
j-=1
k-=1