LintCode-6.合并排序数组

题目

描述

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

样例

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

解答

思路

归并排序。建立新的数组,大小为两个数组长度之和。
从后往前归并,好处在于,如果大的数组长度足够容纳所有的元素,可以降低空间复杂度。

代码

class Solution {
    /**
     * @param A and B: sorted integer array A and B.
     * @return: A new sorted integer array
     */
    public int[] mergeSortedArray(int[] A, int[] B) {
        // Write your code here
        int[] C = new int[A.length+B.length];
        int i = A.length - 1, j = B.length - 1, k = A.length + B.length-1;
        while(i >= 0 && j >= 0){
            C[k--] = (A[i] < B[j]) ? B[j--] : A[i--];
        }
        while(i>=0){
            C[k--] = A[i--]; 
        }
        while(j>=0){
            C[k--] = B[j--]; 
        }
        return C;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,592评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,087评论 0 15
  • 一、 单项选择题(共71题) 对n个元素的序列进行冒泡排序时,最少的比较次数是( )。A. n ...
    貝影阅读 13,044评论 0 10
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,030评论 0 2
  • Implement atoi to convert a string to an integer. Hint: C...
    陆文斌阅读 1,222评论 0 0