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 };