• 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 nums1and nums2 are m and n respectively.

    算法

    代码一

     1 public void merge(int[] nums1,int m,int[]nums2,int n){
     2         for(int i=m-1;i>=0;i--){
     3             nums1[i+n]=nums1[i];
     4         }
     5         int i=n,j=0,k=0;
     6         while(i<n+m&&j<n){
     7             if(nums1[i]<=nums2[j]){
     8                 nums1[k]=nums1[i];
     9                 i++;
    10             }else{
    11                 nums1[k]=nums2[j];
    12                 j++;
    13             }
    14             k++;
    15         }
    16         if(i>=n+m){
    17             while(k<m+n){
    18                 nums1[k]=nums2[j];
    19                 k++;
    20                 j++;
    21             }
    22         }else{
    23             while(k<m+n){
    24                 nums1[k]=nums1[i];
    25                 i++;
    26                 k++;
    27             }    
    28         }
    29     }

    代码二

     1 public void merge1(int[] nums1,int m,int[] nums2,int n){
     2         int i=m-1,j=n-1,k=m+n-1;
     3         while(i>=0&&j>=0){
     4             if(nums1[i]>=nums2[j]){
     5                 nums1[k--]=nums1[i--];
     6             }else{
     7                 nums1[k--]=nums2[j--];
     8             }
     9         }
    10         while(j>=0){
    11             nums1[k--]=nums2[j--];
    12         }
    13     }

    注意事项

    (1)数组的后移要从后边开始,而不是从前边开始。

  • 相关阅读:
    数据库01
    并发编程6
    并发编程5
    并发编程4
    并发编程3
    并发编程2
    并发编程1
    kali 下文件操作
    kali driftnet
    2017.1.1
  • 原文地址:https://www.cnblogs.com/qiaoshanzi/p/4995979.html
Copyright © 2020-2023  润新知