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、相关知识点
数组的题目还是要想到双指针的做法。

浙公网安备 33010602011771号