解题思路:第二次做这样的题了,还是错了,整体思路就是用三个指针,mid指向nums1有值的最后一个即m-1,end指向nums1的最后一个即m+n-1,n-1指向nums2的最后一个循环遍历到mid或者n-1一个为空,值得注意的是:要判断nums2是否遍历完,要是没有遍历完需要把nums2的值赋到nums1里
代码:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int mid=m-1,end=m+n-1;
while(n>0&&mid>=0){
if(nums1[mid]>nums2[n-1]){
nums1[end]=nums1[mid--];
}
else{
nums1[end]=nums2[--n];
}
end--;
}
while(n>0){
nums1[end--]=nums2[--n];
}
}
};