偷懒了,直接用合并两个数组,再用cpp排序算法
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for(int i=0;i<n;++i){
nums1[m+i]=nums2[i];
}
sort(nums1.begin(),nums1.end());
}
};
空间开销很大,时间开销一般
解法2:双指针
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p1=0,p2=0,cur;
vector<int>nums = nums1;
while(p1<m||p2<n){
if(p1==m){
cur=nums2[p2++];
}
else if(p2==n){
cur=nums1[p1++];
}
else if(nums1[p1]<nums2[p2]){
cur=nums1[p1++];
}
else{
cur=nums2[p2++];
}
nums[p1+p2-1]=cur;
}
for(int i=0;i<m+n;i++){
nums1[i]=nums[i];
}
}
};
都属于空间时间开销大