LeetCode 88. MergeSortedArray(Easy)【玩转双指针】

题目描述

给定两个有序数组,把两个数组合并为一个。

解题思路

由于题目要求不借助第三个数组,合并到 nums1 上,就用尾指针,然后逐一比较,运用归并排序的思想来解答。最后判断一下 nums2 数组是否还存在元素,若存在,直接放入(因为数组是有序的)。

AC

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int pos = m+n-1;
        m-=1,n-=1;
        while(m>=0&&n>=0){
            nums1[pos--] = nums1[m] > nums2[n]? nums1[m--]:nums2[n--];
        }
        while(n>=0) nums1[pos--] = nums2[n--];
    }
};
学如逆水行舟,不进则退
原创文章 622 获赞 2443 访问量 41万+

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/105949854