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.
    

      

    class Solution {
    public:
        void merge(int A[], int m, int B[], int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int i , j ,temp ;
            if(n== 0) return ;
            if(m== 0){
                for(i = 0; i < n; i++)
                   A[i] = B[i];
              
                return ;
            }
            
          
            for(j = 0 ;j< n ;j++)
            {
                  temp = B[j];
                  for(i = m-1+j;  i>=0; i--)
                  { 
                    if(A[i]<= temp)
                       break;
                    else
                      A[i+1] = A[i];
                  }
                  A[i+1] = temp ; 
            }
        }
    };

     从后往前处理,寻找大数据插到A的后面,时间复杂度O(m+n)

    class Solution {
    public:
        void merge(int A[], int m, int B[], int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
           int cur = m + n -1;
           int lastA = m-1;
           int lastB = n-1;
           
           while(lastA>= 0 &&lastB >= 0)
           {
             A[cur--] = A[lastA] > B[lastB] ? A[lastA--]: B[lastB--];
           }
           
           while(lastB >= 0)
           {
            A[cur--] = B[lastB--] ;
           }
        }
    };
    --------------------------------------------------------------------天道酬勤!
  • 相关阅读:
    C语言编程练习4:镂空三角形
    C语言编程练习3:小明的18岁生日
    C语言编程练习2:放大的X
    C语言编程练习1:打印数字图形
    Hexo+Github搭建个人博客
    报表
    唐人街探案
    窗体
    ACCESS SQL
    交叉表
  • 原文地址:https://www.cnblogs.com/graph/p/3039918.html
Copyright © 2011-2022 走看看