zoukankan      html  css  js  c++  java
  • [leetCode]面试题 10.01. 合并排序的数组

    在这里插入图片描述

    双指针

    从后向前进行对比,将对比结果放在数组A最后

    class Solution {
        public void merge(int[] A, int m, int[] B, int n) {
            int pA_end = m - 1;
            int pB_end = n - 1;
            int p = m + n -1;
            while(pB_end >= 0 && pA_end >= 0){
                if(A[pA_end] <= B[pB_end]){
                    A[p] = B[pB_end];
                    --pB_end;
                    --p;
                }else{
                    A[p] = A[pA_end];
                    --pA_end;
                    --p;
                }
            }
            System.arraycopy(B, 0, A, 0, pB_end+1); 
        }
    }
    

    System.arraycopy函数参数解释:
    System.arraycopy(源数组, 源数组起始位置, 目标数组, 目标数组起始位置, 从源数组复制的长度);

    下面是简化写法

    class Solution {
        public void merge(int[] A, int m, int[] B, int n) {
            int pA_end = m - 1;
            int pB_end = n - 1;
            int p = m + n -1;
            while(pB_end >= 0 && pA_end >= 0){
                A[p--] = (A[pA_end] <= B[pB_end])?B[pB_end--]:A[pA_end--];
            }
            System.arraycopy(B, 0, A, 0, pB_end+1); 
        }
    }
    

    这题和leetCode第88题一样:合并两个有序数组

  • 相关阅读:
    delphi之动态库调用和串口通讯
    git如何使用 svn如何使用
    delphi学习笔记1
    sql
    linux连接与传输等命令
    jdbc
    list/tstringlist/tobjectlist
    SQL GRANT
    Invalidate介绍
    FORM 的创建
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859994.html
Copyright © 2011-2022 走看看