zoukankan      html  css  js  c++  java
  • merge sorted array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

    Note:
    You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

    合并两个有序数组,合并的结果全放在nums1数组中,nums1数组的长度至少为两个数组元素个数之和。

    思路:这就跟归并排序一样。

    第一种:使用额外数组作为辅助数组。最后将元素赋值给nums1,而不是将nums1指向辅助数组。

    public void merge(int[] nums1, int m, int[] nums2, int n) {
          if(m==0&&n==0)  return;
            if(nums1==null||m==0) {
                for(int i=0;i<n;i++)
                    nums1[i]=nums2[i];
                return ;}
            if(nums2==null||n==0) return ;
            int[] tem=new int[m+n];
            int i=0;
            int j=0;
            int k=0;
            while(j<n&&i<m){
                if(nums1[i]<nums2[j])
                    tem[k++]=nums1[i++];
                else
                    tem[k++]=nums2[j++];
            }
            
            while(i<m){
                tem[k++]=nums1[i++];
            }
            while(j<n){
                tem[k++]=nums2[j++];
            }
            
          for(i=0;i<m+n;i++)
                    nums1[i]=tem[i];
                    
                   
    View Code

    第二种:不使用额外数组。直接防在nums1中,但是由于nums1中有元素,所以从nums1数组的最后开始存放,从大到小往前。

     int i=m-1;
            int j=n-1;
            int k=m+n-1;
            while(i>=0&&j>=0){
                if(nums1[i]<nums2[j])
                    nums1[k--]=nums2[j--];
                else
                    nums1[k--]=nums1[i--];
            }
            //因为在nums1中操作,所以nums1如果有剩下的元素就不用管了
            while(j>=0)
                nums1[k--]=nums2[j--];
  • 相关阅读:
    Node项目
    Angular模块/服务/MVVM
    Angular介绍1
    Node环境配置及Gulp工具
    Linux及Git介绍
    数据库MySQL
    ReactiveCocoa 监听枚举类型enumerate 或者 NSInteger类型
    ReactiveCocoa 监听布尔(BOOL)类型改变
    python3.7 urlopen请求HTTPS警告'CERTIFICATE_VERIFY_FAILED'解决办法
    Centos yum命令
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8073409.html
Copyright © 2011-2022 走看看