描述
合并两个排序的整数数组A和B变成一个新的数组。
您在真实的面试中是否遇到过这个题?
是
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
因为两边都是排序数组,所以依次比较数组的第一个元素即可,在其中一个数组已经空了,可以直接将另一个数组添加到新数组中即可。
class Solution { public: /** * @param A: sorted integer array A * @param B: sorted integer array B * @return: A new sorted integer array */ vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { // write your code here vector <int> NewArray(A.size() + B.size()); int i = 0; int j = 0; while (i<A.size()&&j<B.size()) { if (A[i] < B[j]) { NewArray[i + j] = A[i]; i++; } else { NewArray[i + j] = B[j]; j++; } } if (i != A.size()) { while (i < A.size()) { NewArray[i + j] = A[i]; i++; } } if (j != B.size()) { while (j < B.size()) { NewArray[i + j] = B[j]; j++; } } return NewArray; } };