zoukankan      html  css  js  c++  java
  • [leetcode 88. 合并两个有序数组] 尾部归并O(1)空间,最好O(n)最坏O(m+n),双100%

    题目描述

    给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
    说明:

    • 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
    • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

    示例:

    输入:
    nums1 = [1,2,3,0,0,0], m = 3
    nums2 = [2,5,6],       n = 3
    
    输出: [1,2,2,3,5,6]
    

    解题思路

    题目比较简单,这里只提几个关键地方

    • 最后一个索引位置是 m+n-1
    • nums2 并入完成后,合并已经结束(官方题解中还继续对nums1进行赋值)

    提交结果

    代码

    /**
     * @param {number[]} nums1
     * @param {number} m
     * @param {number[]} nums2
     * @param {number} n
     * @return {void} Do not return anything, modify nums1 in-place instead.
     */
    var merge = function(nums1, m, nums2, n) {
        let idx = m+n-1, i=m-1,j=n-1;
        // 当 nums2 并入完成
        while (j >= 0) {
            if (i>=0 && nums1[i] >= nums2[j]) {
                nums1[idx] = nums1[i];
                i--;
            } else {
                nums1[idx] = nums2[j];
                j--;
            }
            idx--;
        }
        return nums1;
    };
    
  • 相关阅读:
    传智播客itcastbbs(二)
    传智播客itcastbbs(三)
    传智播客itcastbbs(一)(图文)
    传智播客itcastbbs(四)
    传智播客itcastbbs(六)
    双语美文:我想! 我做! 我得到!
    java邮件开发详解
    JDK_Tomcat_MyEclipse配置
    醋泡大蒜有什么功效
    优盘量产
  • 原文地址:https://www.cnblogs.com/dapianzi/p/12704570.html
Copyright © 2011-2022 走看看