classSolution{public:voidmerge(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
classSolution{public:voidmerge(vector<int>& nums1,int m, vector<int>& nums2,int n){for(int i =0; i < nums2.size(); i++)
nums1.insert(lower_bound(nums1.begin(), nums1.begin()+ m + i, nums2[i]),nums2[i]);
nums1.erase(nums1.begin()+ m + n, nums1.end());}};
代码3
classSolution{public:voidmerge(vector<int>& nums1,int m, vector<int>& nums2,int n){//逆向改写int p1 = m -1,p2 = n -1,p = m + n -1;while(p >=0){//只剩下一个数组扫描if(p1 <0)
nums1[p--]= nums2[p2--];elseif(p2 <0)
nums1[p--]= nums1[p1--];//两个数组交叉扫描elseif(nums1[p1]<= nums2[p2])
nums1[p--]= nums2[p2--];else
nums1[p--]= nums1[p1--];}}};