zoukankan      html  css  js  c++  java
  • 88. Merge Sorted Array 后插

    合并两个排序的整数数组A和B变成一个新的数组。给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]

    假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。

    给出 A = [1, 2, 3, empty, empty], B = [4, 5]

    合并之后 A 将变成 [1,2,3,4,5]

    [一句话思路]:向前比较,把小数头插。

    [一刷]没写出来:

    1. int[] result = new int[空间];
    2. for(i=0; i<n ;i++)。取数时,nums[0] nums[n-1]都要取数;新建数组时,尺寸是m+n
    3. 最后长数组补漏应该是while
    4. 后插的时候,index也是--
    5. m n本来就是length参数,已经有了,不用测量了
    6. 返回类型为void时,别新建result函数,用nums1就行

    [总结]:

    1. 前插从第0位开始,尾插从第n-1位开始
    2. 返回void型函数时,用前插会覆盖。所以不管nums1是否有空位,都用尾插。

    [复杂度]:时间n,空间1

    [英文数据结构]:array

    [其他解法]:

    [题目变变变]:暂时没有用array的merge题目了

    public class Solution {
        /*
         * @param A: sorted integer array A which has m elements, but size of A is m+n
         * @param m: An integer
         * @param B: sorted integer array B which has n elements
         * @param n: An integer
         * @return: nothing
         */
        public void merge(int[] A, int m, int[] B, int n) {
            // write your code here
            int index = m + n - 1;
            int i = m - 1;
            int j = n - 1;
            
            while (i >= 0 && j >= 0) {
                if (A[i] > B [j]) {
                    A[index--] = A[i--];
                }
                else {
                    A[index--] = B[j--];
                }
            }
            
            while (i >= 0) {
                    A[index--] = A[i--];
                }
            while (j >= 0) {
                    A[index--] = B[j--];
                }
        }
    }
    View Code
  • 相关阅读:
    mybatis 自定义插件的使用
    mybatis的TypeHandler 的使用
    css水平居中的各种方法
    ASP.Net MVC——DotNetZip简单使用,解决文件压缩问题。
    TinyMCE的使用(包括汉化及本地图片上传功能)
    ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
    关于项目中值对象Identifier的设计-领域驱动
    B/S工作原理
    大学期间项目笔记
    C#反射机制
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7910619.html
Copyright © 2011-2022 走看看