leetcode【排序与搜索】-----88. Merge Sorted Array(合并两个有序数组)

1、题目描述

2、分析

        首先,这道题给出了两个数组,还有两个数组里元素的个数,并且第一个数组的大小其实是两个数组里元素的总数。题目给了两个排序数组,那么要将两个排序合并起来,我们需要三个指针,一个指向第一个数组的有效的最后一个元素,一个指向第二个数组的最后一个有元素,一个指向第一个数组的最后一个位置,这样,从后面开始比较,将大的元素放入第一个数组的最后一个位置,并将指针移动到下一个位置。

3、代码

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i=m-1,j=n-1,q=m+n-1;
        while(i>=0&&j>=0){
            if(nums1[i]>nums2[j]) nums1[q--]=nums1[i--];
            else nums1[q--]=nums2[j--];
        }
        while(j>=0) nums1[q--]=nums2[j--];
    }
};

4、相关知识点

        数组的题目还是要想到双指针的做法。

posted @ 2019-04-20 21:16  吾之求索  阅读(113)  评论(0)    收藏  举报