1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 12 { 13 if(n==0) 14 return; 15 int p1=m-1,p2=n-1,p=m+n-1; 16 while(p1>=0&&p2>=0) 17 { 18 if(nums1[p1]<nums2[p2]) 19 nums1[p--]=nums2[p2--]; 20 else 21 nums1[p--]=nums1[p1--]; 22 } 23 while(p2>=0) 24 nums1[p--]=nums2[p2--]; 25 return; 26 } 27 };
先指定合并容器长度,然后扫描两个原始序列,从后向前比较,比较一次就可以确定一个元素最终位置。
当某个原序列比较完毕后,若比较完毕的是nums2序列,则直接返回
若比较完的是nums1序列,则要将剩下的nums2元素顺序放入合并序列的前面空位置。
浙公网安备 33010602011771号