88. 合并两个有序数组
思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可。
为了避免覆盖所以从最后开始向前放最大的元素
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//利用归并排序的思想
int index1 = m-1, index2 = n-1;
int size_nums = nums1.size()-1;
//先整体进行排序
while(index1>=0&&index2>=0){
if(nums1[index1]<nums2[index2]){
nums1[size_nums] = nums2[index2];
index2--;
size_nums--;
}else {
nums1[size_nums] = nums1[index1];
index1--;
size_nums--;
}
}
//考虑边界情况
while(index1>=0){
nums1[size_nums] = nums1[index1];
index1--;
size_nums--;
}
//当第二个索引没有到0,说明第二个还有数没有完全到1里面
while(index2>=0){
nums1[size_nums] = nums2[index2];
index2--;
size_nums--;
}
}
};