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];
            
        }
    }


  • 相关阅读:
    博客搬家申请CSDN至博客园
    关于java8新特性的一些总结
    mysql数据库插入时更改数据
    2017总结
    java中单链表的操作
    工厂设计模式及理解
    筛选法求素数
    tcp粘包,断包问题及处理
    理解B树,B+树
    jvm中锁的优化
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6770427.html
Copyright © 2011-2022 走看看