zoukankan      html  css  js  c++  java
  • LeetCode 88. 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和nums2,将nums2合并到nums1成一个排序数组。

    批注: 你可以假设nums1中有足够的空间(空间大于或等于m+n)来存放来自nums2的额外元素。 nums1和nums2的初始空间分别是m和n。

    分析

    1. 本题的难点在于,nums1的长度足够大,但是只初始化了m个,nums2所有的空间均初始化了,为n个
    2. 采用从nums1的最后一位开始插入,因为从前插入会很麻烦,后面的值都要往后退一位
    3. 分别同时从nums1和nums2的最后开始比较,谁大往nums1后插入,同时指针向前挪一位

    代码实现

    # 本题的重点在于nums1的空间是足够的,但是只初始化了m个
    class Solution(object):
        def merge(self, nums1, m, nums2, n):
            """
            :type nums1: List[int]
            :type m: int
            :type nums2: List[int]
            :type n: int
            :rtype: void Do not return anything, modify nums1 in-place instead.
            """
            last_1 = m-1
            last_2 = n-1
            last = len(nums1) - 1
            while last_1 >=0 and last_2 >=0:
                if nums1[last_1] >= nums2[last_2]:
                    nums1[last] = nums1[last_1]
                    last_1 -= 1
                else:
                    nums1[last] = nums2[last_2]
                    last_2 -= 1
                last -= 1
                
            while last_2 >=0:
                nums1[last] = nums2[last_2]
                last_2 -= 1
                last -= 1
                        
                        
                        
    

      

  • 相关阅读:
    win10自动休眠解决方法
    创世纪游戏、黄金分割比
    placeholder和assign速度对比
    内耗
    windows下编写dll
    北航院系和数字的对应关系
    maven Could not resolve dependencies
    java9模块不可见问题
    maven-dependencies插件的模拟实现
    Freemarker简单封装
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/6807767.html
Copyright © 2011-2022 走看看