一、题目描述
题目描述
二、思路
新声明一个vector<int> v,将nums1与nums2分别从0开始遍历,将小的数插入v中,对应索引加一;直到一方元素遍历完毕,再将另一方元素全部插入v中,最后:nums1 = v。
PS.归并排序的“治”阶段使用这种思路。
三、代码
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> v;
int index1 = 0;
int index2 = 0;
while(index1 < m && index2 < n){
if(nums1[index1] < nums2[index2]){
v.push_back(nums1[index1]);
index1++;
}else{
v.push_back(nums2[index2]);
index2++;
}
}
// nums1还有元素剩余
while(index1 < m){
v.push_back(nums1[index1]);
index1++;
}
// nums2还有元素剩余
while(index2 < n){
v.push_back(nums2[index2]);
index2++;
}
nums1 = v;
}
};
四、提交结果
提交结果