leetcode85 合并两个有序数组

2023-10-31

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

解析

这道题看到后,先想到的是链表中的合并两个有序链表,两道题还不太一样,这道需要将结果还是放到nums1中。肯定是用双指针来解了,比较两个下标的大小,相对容易想到的方法是先两个比较,将小的值放到一个临时数组中,最后再来一下copy(nums1,temp)是可以解决的:

func merge(nums1 []int, m int, nums2 []int, n int) {
    sorted := make([]int, 0, m+n)
    p1, p2 := 0, 0
    for {
        if p1 == m {
            sorted = append(sorted, nums2[p2:]...)
            break
        }
        if p2 == n {
            sorted = append(sorted, nums1[p1:]...)
            break
        }
        if nums1[p1] < nums2[p2] {
            sorted = append(sorted, nums1[p1])
            p1++
        } else {
            sorted = append(sorted, nums2[p2])
            p2++
        }
    }
    copy(nums1, sorted)
}

很明显开了临时数组,如果不想开的化,直接操作nums1,又会存在值被覆盖的情况,所以需要从后到前来双指针:

func merge(nums1 []int, m int, nums2 []int, n int)  {
    p1,p2:=m-1,n-1
    allLen :=m+n-1
    for p1>=0&&p2>=0{
        if nums1[p1] >= nums2[p2] {
            nums1[allLen] = nums1[p1]
            allLen--
            p1--
        }else{
            nums1[allLen] = nums2[p2]
            allLen--
            p2--
        }
    }
    for p2>=0{
        nums1[allLen] = nums2[p2]
        allLen--
        p2--
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode85 合并两个有序数组 的相关文章

随机推荐

  • Linux定时服务

    目录 1 定时器操作 2 cron表达式的语法规则 参考链接 1 定时器操作 sudo crontab e 选择2 进入进行配置 需要按下 i sh home xx crontabsh test sh的意思是 让sh解释器调用test sh
  • cannot import name ‘mean_squared_erro‘ from ‘sklearn.metrics‘

    sklearn中模块包的导入报错 根据其他博主的意见 sklearn更新的版本中有很多包调整了层次结构 以至于我们在跑代码的时候会出现导入包错误 这时候我们需要做的就是打开sklearn的官网 https scikit learn org
  • 【华为OD机试真题2023B卷 JAVA&JS】增强的strstr

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 增强的strstr 知识点字符串 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 C 语言有一个库函数 char strstr const char haystack
  • 聚观早报

    今日要闻 滴滴被处罚 80 26 亿元罚款 百度发布第六代量产无人车Apollo RT6 特斯拉出售比特币资产 套现近10亿美元 字节跳动估值跌破3000亿美元 哪吒汽车完成超 30 亿元 D3 轮融资 滴滴被处罚 80 26 亿元罚款 据
  • 时序预测

    时序预测 MATLAB实现CNN 卷积神经网络 时间序列预测 预测效果一览 以下介绍程序设计过程 加载数据与数据集划分 常用load载入 mat文件 划分数据集 计算数据长度
  • 在window10 WSL 中编译 OpenJDK13

    简介 最新的OpenJDK13已经发布到git上 可以git pull 然后编译了 这里介绍了直接在windows 10 的WSL环境中进行build并测试 准备 在Open JDK13的网站文档中说 很简单的几步操作就好 下载源码 hg
  • 破局之作:首部开源 AIGC 软件工程应用电子书《构筑大语言模型应用:应用开发与架构设计》...

    TL DR 版 在线 https aigc phodal com 下载 1 https github com phodal aigc releases 下载 2 https pan baidu com s 1wGc75vVHaZwvZyHe
  • 数据结构与算法绪论

    什么是数据结构 明白以下两点即可领悟 程序设计 数据结构 算法 数据结构就是一种 数据元素 间一种或多种特定关系的表征 数据结构的分类 分为 逻辑结构 和 物理结构 逻辑结构 是指 数据元素 间相互关系 物理结构 是指 数据的逻辑结构 在计
  • elsevier中elsarticle模板如何使用apa引用格式

    我们知道latex的默认引用 cite 是长这样的 那elsevier下面的很多期刊要求我们使用apa 美国心理学会 的引用格式 其是长这样的 方法 这个问题折磨我好久 网上说使用 usepackage apacite 包 可是我一在els
  • 「深度小课堂」虚拟化技术入门科普

    云计算已经成为了服务器端的潮流 通过它 我们可以有效支持弹性计算 隔离兼容等一系列的需求 计算力可以像水电一样为人们所使用 而虚拟化技术正是云计算中最重要的技术 虚拟化技术一般可以被分为两类 分别是虚拟机 VM Virtual Machin
  • sklearn的DecisionTreeClassifier的参数random_state

    刚刚使用SKLearn学习机器学习进行数据分析 分享一些概念和想法 希望可以大家一起讨论 如果理解或者表达有不准确的地方 请多多指点 不吝赐教 非常感谢 本文将继续介绍sklearn的决策树模块的其他参数 涉及到的理论知识 请转至上篇 决策
  • stm32f407zgt6的pdr_on引脚怎么接

    原文链接 https www amobbs com thread 5495105 1 1 html dsign c6460fe9 407的100脚封装没有这个PDR ON 就是VSS 在引脚分布图中为pdr on 但实际量pdr on对VS
  • 【计算机毕业设计】深度学习的驾驶行为检测

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • 某行业CTF一道流量分析题

    今晚看了一道题 记录学习下 给了一个hacktrace pcapng 分析主要内容如下 上传两个文件 一个mouse m2s 一个mimi zip 将其导出 mimi zip中存放着secret zip和key pcapng 不过解压需要密
  • EFilm 3.1 安装文件

    国外网站上找到的 拿出来分享下 第一部分 http download csdn net detail crazpro 9696368 第二部分 http download csdn net detail crazpro 9696402 第三
  • Java:Scanner中的nextInt()方法

    文章目录 方法 验证 方法 Scanner中的nextInt 只会读取数值 剩下 n 还没有读取 并将cursor放在本行中 相当于C语言里面的scanf d i 验证 为方便描述 创建一个Scanner 对象in 注 标准输入System
  • axios的三次封装

    1 第一次封装 把项目中所有请求做的相同的事情 baseURL timeout 请求 响应式 成功或失败的提示 封装到一个文件夹里 这个文件夹通常叫做utils axios封装 通用工具函数 引入axios import axios fro
  • jdk1.8的安装和环境变量的配置最新版(超详细,保姆级教程)

    目录 一 JDK的下载和安装 1 JDK的下载 1 方式一 通过下面的链接地址直接下载jdk1 8版本 2 方式二 通过Oracle官网进行下载 2 jdk的安装 二 环境变量的配置 1 通过jdk路径配置环境变量 2 通过JAVA HOM
  • 剑指Offer53Java代码

    public class T53 public static boolean match String str String pattern if str null pattern null return false return matc
  • leetcode85 合并两个有序数组

    题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列 注意