zoukankan      html  css  js  c++  java
  • 第十二题 Merge Sorted Array

    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 (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m and nrespectively.

    Solution1:新建ArrayList暂存merged list,后放回A

    public class Solution {
        public void merge(int A[], int m, int B[], int n) {
            int length = m+n;
            ArrayList<Integer> merge = new ArrayList<Integer>();
            int posA =0, posB=0, i=0;
            while( i<length){
                if(posB>=n){merge.add(A[posA]); posA++; i++;}
                else if(posA>=m){ merge.add(B[posB]); posB++; i++;}
                else if(A[posA]<=B[posB]){merge.add(A[posA]); posA++; i++;}
                else{merge.add(B[posB]); posB++; i++;}
            }
            for(i=0; i<length;i++){
                A[i] = merge.get(i);
            }
        }
    }
    Solution2:可不能够不额外开辟空间?利用倒序。

    public class Solution {
        public void merge(int A[], int m, int B[], int n) {
            int position = m+n-1;
            while(m>0 && n>0){
                if(A[m-1]>=B[n-1]) {
                    A[position] = A[m-1];
                    m--;
                    
                }
                else{
                    A[position] = B[n-1]; 
                    n--; 
                    
                }
                position--;
            }
            while(n>0){
                A[position] = B[n-1];
                n--;
                position--;
            }
        }
    }

    Solution1:再简单点?

    public class Solution {
        public void merge(int A[], int m, int B[], int n) {
            
            for(int i=m+n-1; i>=0; i--) A[i]=((m>0)&&(n==0 || A[m-1]>=B[n-1]))?A[--m]:B[--n];
            
        }
    }


  • 相关阅读:
    Android面试题
    java面试题大全
    关于索引的sql语句优化之降龙十八掌
    java动态代理的实现
    java动态代理
    进程与线程
    SqlServer聚合函数
    2015年创业中遇到的技术问题:21-30
    hadoop集群ambari搭建(2)之制作hadoop本地源
    Android录屏命令、Android录Gif、Android录视频
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6770427.html
Copyright © 2011-2022 走看看