美文网首页
Merge Sorted Array

Merge Sorted Array

作者: 无为无悔 | 来源:发表于2016-12-02 20:18 被阅读0次
    • 描述

    Given two sorted integer arrays A and B, merge B into A as one sorted array.

    Note:
    You may assume that A has enough space to hold additional elements from B.
    The number of elements initialized in A and B are m and n respectively.

    • 分析
      传统的做法是用辅助数组C存放最终结果,从头开始逐一比较A和B的元素,然后插入到C中;
      本题保证A有足够的空间,那么它并不想我们创建额外的空间,如果按照传统方法,比较,插入,那么每插入一个元素,数组A的其余元素都需要依次往后移一位,增加了时间复杂度;
      既然A有足够的空间,那么可以对其预留的空间加以利用,从数组的后面开始扫描,那么完成比较,插入,后续不需要再移动任何元素了。

    • 时间复杂度O(m+n),空间复杂度O(1)

    
    public class Solution {
        public int[] merge(int[] a, int b[]) {
            int i = a.length - 1;
            int j = b.length - 1;
            int k = a.length + b.length - 1;
            while (i >= 0 && j >= 0) {
               a[k--] = a[i] < b[j]? b[j--]:a[i--];
            }
            while (j >= 0) {
                a[k--] = b[j--];
            }
           return a;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Merge Sorted Array

          本文链接:https://www.haomeiwen.com/subject/mkuqmttx.html