题目链接: https://leetcode.cn/problems/merge-sorted-array/
详情:
这题看起来像是数组题而不是排序题。
分析:
言归正传,这题说了是有序数组,要求在nums1上原地修改。
所以我们就要从后往前遍历,这样的话,可以把前面的位置腾出地方,不需要用额外的存储空间。
代码:
class Solution: def merge(self, nums1, m, nums2, n) -> None: """ Do not return anything, modify nums1 in-place instead. """ # nums1, nums2的指针, 分别指向"最后一个元素" f_ptr, s_ptr = m-1, n-1 # 总指针, 指向nums真正的最后一个元素 r_ptr = len(nums1)-1 while r_ptr >= 0 and f_ptr >= 0 and s_ptr >= 0: if nums1[f_ptr] >= nums2[s_ptr]: nums1[r_ptr] = nums1[f_ptr] f_ptr -= 1 else: nums1[r_ptr] = nums2[s_ptr] s_ptr -= 1 r_ptr -= 1 while r_ptr >= 0 and s_ptr >= 0: nums1[r_ptr] = nums2[s_ptr] r_ptr -= 1 s_ptr -= 1
标签:nums1,88,数组,排序,ptr,nums2 From: https://www.cnblogs.com/bjfu-vth/p/16731734.html