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元素顺序放入合并序列的前面空位置。

posted on 2018-04-17 13:41  高数考了59  阅读(105)  评论(0)    收藏  举报