6. 合并排序数组 II

Merge two given sorted integer array A and B into a new sorted integer array.

Example

A=[1,2,3,4]

B=[2,4,5,6]

return [1,2,2,3,4,4,5,6]

Challenge 

How can you optimize your algorithm if one array is very large and the other is very small?


合并两个排序的整数数组A和B变成一个新的数组。

样例

给出A=[1,2,3,4]B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]

挑战 

你能否优化你的算法,如果其中一个数组很大而另一个数组很小?


vector<int>  A表示可以实现自动生长对象的动态数组,可以用A.size()来表示数组大小

这道题我采用了将数组的数值赋给vector的方法,即运用了vector<int> A(a, a+4);这种表示方法,表示从a数组的第一个开始一共四个值赋给vector<int> A 。

因为得出的结果是已经进行排序后的结果,所以我就边整合边排序,这样当一个数组完成时,直接将另一个数组整个到结果中就可以了。


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
		int i = 0, j = 0, k = 0;
		int count = A.size() + B.size();
		int c[count];
		while(i < A.size() && j < B.size())
		{
			if(A[i] < B[j])
			{
			c[k++] = A[i++];
			}
			else
			{
				c[k++] = B[j++];
			}
		}
		while(i < A.size())
		{
			c[k++] = A[i++];
		}
		while(j < B.size())
		{
			c[k++] = B[j++];
		}
		vector<int> C(c, c+count);
		return C;
    }
};

我将A和B的值都整合到数组c中,再将数组c中的值赋给vector<int> C,这样便可以返回c的结果。

这道题我直接使用了整型数组的方法整合,整理并排序,这样的方法在空间复杂度上会多使用空间来存储整合后的集合,但是这样就省下了排序的过程。





2018/1/23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值