zoukankan      html  css  js  c++  java
  • LeetCode Array Easy 88. Merge Sorted Array

    Description

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

    Note:

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

    Example:

    Input:
    nums1 = [1,2,3,0,0,0], m = 3
    nums2 = [2,5,6],       n = 3
    
    Output: [1,2,2,3,5,6]

    问题描述:给定两个已排序的数组,将第二个数组归并成到第一个数组,假定第一个数组的大小足够将第二个数组加进来

    这一题一开始没有注意到前提条件是两个已排序的数组,一开始是先将第二个数据添加到第一个数组的尾部,然后在进行普通的归并排序,但是在本地运行正常,LeetCode老是WA,后来注意到了前提条件,对代码进行了简化,思路是从前面进行归并,并且不开一个新的数组来进行归并,无果。必须要使用一个新的数组开作为容器,才可以进行从前往后的归并。最后,根据正难则反的思路,从后面进行归并,顺利找出解决方法。

    下面是C#的解决方案

    public static void Merge(int[] nums1, int m, int[] nums2, int n)
            {
                int i = m-1, j = n-1;
                
                for(int k = m + n - 1; k >= 0; k--)
                {
                    if (i < 0) nums1[k] = nums2[j--]; //如果i小于0 说明num1的原始数据已经归并完毕,直接对num2进行归并
                    else if (j < 0) nums1[k] = nums1[i--];//如果j小于0 说明num2的原始数据已经归并完毕,直接对num1进行归并
                    else if(nums1[i] > nums2[j]) nums1[k] = nums1[i--];
                    else nums1[k] = nums2[j--];
                    
                }
               
            }

     

  • 相关阅读:
    简单的股票分析系统
    gtest日志在工程项目中的应用
    doctest初次体验
    python写的读取json配置文件
    logbook日志系统
    python3 pyodbc简单使用
    numpy中dtype
    python获取代码行号
    Python操作SQLServer示例(转)
    log4j与log4j.properties的配置
  • 原文地址:https://www.cnblogs.com/c-supreme/p/9523825.html
Copyright © 2011-2022 走看看