zoukankan      html  css  js  c++  java
  • leetcode — merge-sorted-array

    import java.util.Arrays;
    
    /**
     * Source : https://oj.leetcode.com/problems/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 n respectively.
     */
    public class MergeSortedArray {
    
        /**
         * 将数组B合并到数组A,数组A空间足够大能放得下B
         * 合并两个排序的数组,使用两个指针分别指向两个数组,然后比较大小将较小的放到数组A中,
         *          如果把小的放在前面可能回把A中的元素覆盖(数组排序是升序的)
         *
         * 所以可以考虑从两个数组的末尾开始合并,将较大的元素放在A数组的最后
         *
         * 如果任意一个数组遍历完了,把B中剩下的元素依次插入A中
         * @param a
         * @param b
         * @return
         */
        public int[] merge (int[] a, int m, int[] b, int n) {
            int pa = m - 1;
            int pb = n - 1;
            int pc = m + n - 1;
            while (pa > -1 && pb > -1) {
                if (a[pa] > b[pb]) {
                    a[pc--] = a[pa--];
                } else {
                    a[pc--] = b[pb--];
                }
            }
            while (pb > -1) {
                a[pc--] = b[pb--];
            }
            return a;
        }
    
        public static void main(String[] args) {
            MergeSortedArray mergeSortedArray = new MergeSortedArray();
            int[] a = new int[]{1,5,9,0,0,0,0};
            int[] b = new int[]{2,3,8};
    
            System.out.println(Arrays.toString(mergeSortedArray.merge(a, 3, b, 3)));
        }
    }
    
  • 相关阅读:
    阿里云的使用运维安装
    阿里云的使用运维安装
    promis:异步编程
    promis:异步编程
    微信开发笔记
    细数那些带打赏功能的平台
    细数那些带打赏功能的平台
    Java Web Services (0)
    4、查询(2)
    COGS——C610. 数对的个数
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7759798.html
Copyright © 2011-2022 走看看