6. 合并排序数组
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
先上一个无脑的,可以AC
1 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { 2 // write your code here 3 for(int i=0;i<B.size();i++){ 4 A.push_back(B[i]); 5 } 6 sort(A.begin(), A.end()); 7 return A; 8 }
其实这个题是面试场景出现的话,完全可以先弄一个暴力的出来,后面再慢慢优化,这也是一个思路的过程
下面这一个就是很常规的了,就是申请了一个新数组,空间复杂度高一些
1 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { 2 // write your code here 3 vector<int> result(A.size()+B.size(), 0); 4 int i = 0, j = 0; 5 int k = 0; 6 while (i < A.size() && j < B.size()) 7 { 8 if (A[i] > B[j]) 9 { 10 result[k++] = B[j++]; 11 } 12 else 13 { 14 result[k++] = A[i++]; 15 } 16 } 17 while (i < A.size()) 18 { 19 result[k++] = A[i++]; 20 } 21 while (j < B.size()) 22 { 23 result[k++] = B[j++]; 24 } 25 return result; 26 }