zoukankan      html  css  js  c++  java
  • [Leetcode] 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 to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.

    题意:给定两已排好的数组,将B合并到A中,A足够长。

    思路:归并排序,只不过这题是要保存在A中,题目中的意思是不要开辟新的空间,所以常规的从左到右的归并排序行不通,我们可以从后面开始。这就涉及一个问题了:将数组A和数组B的最后元素相比较后,较大元素放在哪,即下标为多少?因,题中说,A足够大,所以至少m+n个位置,这样我们就可以将较大值放在下标为m+n-1处了。还有一个问题就是,若n>m,这样,主体的算法结束后,我们要考虑,n中的元素如何处理, 毫无疑问,此时m=0了,所以只需将B中的元素对应的赋给A中即可,代码如下:

     1 class Solution {
     2 public:
     3     void merge(int A[], int m, int B[], int n) 
     4     {
     5         if(n==0)    return;
     6 
     7         while(m>0&&n>0)
     8         {
     9             if(A[m-1]>B[n-1])
    10             {
    11                 A[m+n-1]=A[m-1];
    12                 m--;
    13             }
    14             else
    15             {
    16                 A[m+n-1]=B[n-1];
    17                 n--;
    18             }
    19         }
    20         while(n>0)
    21         {
    22             A[m+n-1]=B[n-1];  //m不写也行,此时,m=0
    23             n--;
    24         }
    25     }
    26 };
  • 相关阅读:
    SQL命令
    MySQL、Oracle、SQL Server
    函数调用
    php 读取图片显示在页面上 demo
    浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
    jquery $.ajax()方法
    HTML 字符实体
    php 内置支持的标签和属性
    java-03 变量与运算符
    java-02 JDK安装与环境变量配置&安装编程IDE
  • 原文地址:https://www.cnblogs.com/love-yh/p/7105313.html
Copyright © 2011-2022 走看看