LintCode 6. 合并排序数组 II

Posted zslhg903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 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> result;
        int i=0,j=0;
        int szA=A.size();
        int szB=B.size();
        while(true)
        {
            if(i>=szA&&j<szB)
            {
                result.push_back(B[j++]);
            }
            else if(i<szA&&j>=szB)
            {
                result.push_back(A[i++]);
            }
            else if(i<szA&&j<szB)
            {
                if(A[i]<B[j])
                {
                    result.push_back(A[i++]);
                    
                }
                else
                {
                    result.push_back(B[j++]);
                }
            }
            else
            break;
           
        }
        return result;
    }
};

 

以上是关于LintCode 6. 合并排序数组 II的主要内容,如果未能解决你的问题,请参考以下文章

lintcode_64.合并排序数组 II

LintCode 464 · 整数排序 II

lintcode:寻找旋转排序数组中的最小值 II

LintCode(101)删除排序数组中的重复数字 II

LintCode之合并排序数组

LintCode 101. 删除排序数组中的重复数字 II