6.合并排序数组II

描述

合并两个排序的整数数组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;
	}
};

猜你喜欢

转载自blog.csdn.net/vestlee/article/details/80332605