代码改变世界

leetcode - Merge Sorted Array

2013-10-23 19:37  张汉生  阅读(122)  评论(0编辑  收藏  举报

 

 1 class Solution {
 2 public:
 3     void merge(int A[], int m, int B[], int n) {
 4         // Note: The Solution object is instantiated only once and is reused by each test case.
 5         int i, j;
 6         if (m<=0){
 7             for(i=0; i<n; i++)
 8                 A[i] = B[i];
 9             return;
10         }
11         int * tags = new int[m];
12         j = 0;
13         for (i=0; i<m; i++){
14             if (i==0)
15                 tags[i] = 0;
16             else tags[i] = tags[i-1];
17             while(j<n && B[j]<A[i]){
18                 tags[i]++;
19                 j++;
20             }
21         }
22         int k;
23         k = m+n-1;
24         j = n-1;
25         for (i=m-1; i>=0; i--){
26             while(i+tags[i]<k)
27                 A[k--] = B[j--];
28             if (i+tags[i]==k)
29                 A[k--] = A[i];
30         }
31         for (i=0; i<tags[0]; i++)
32             A[i] = B[i];
33         delete []tags;
34     }
35 };