首页 > 其他分享 >88. 合并两个有序数组

88. 合并两个有序数组

时间:2023-11-07 17:15:52浏览次数:33  
标签:数组 int 元素 合并 88 有序 nums1 nums2

目录

题目

  • 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
    请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
    注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。

示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。

题解、逆序双指针

  • 用倒序相当于存在一个新的列表中,正序的话要额外处理元素被覆盖的情况
class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        k = m + n - 1     #k指针指向nums1的数组末尾
        i, j = m - 1, n - 1  #i指向nums1有元素的末尾,j指向nums2的末尾
        while j >= 0:
            if i >= 0 and nums1[i] > nums2[j]:#nums1的元素值大于nums2时,
                nums1[k] = nums1[i]#放在k指针所指位置
                i -= 1#前移
            else:#nums1的元素值小于等于nums2时,
                nums1[k] = nums2[j]#nums2值放在k指针所指位置
                j -= 1#前移
            k -= 1#前移

标签:数组,int,元素,合并,88,有序,nums1,nums2
From: https://www.cnblogs.com/lushuang55/p/17815381.html

相关文章

  • 问题 E: 兔兔的最小数组
    如果你觉得并查集难以理解的话请看此篇题意:求字典序最小思路:比较字典序最小,类似于字符串的比较:只要前面保证最小即可,如:1000大于0111首先最简单,考虑暴力枚举每个b数组,使得取模后最小,时间复杂度为n^2,(注意:使用后的b数组应该删除)暴力肯定会wa,所以考虑优化因为是查找b数组中的......
  • byte[]、list<byte>数组类型的几个自定义扩展方法
    byte[]、list<byte>数组类型的几个自定义扩展方法。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;namespaceiPublic.类型扩展方法{///<summary>///类型的扩展方法,用起来方便的///修改记录:///20230415,海......
  • 常见数组的排序算法的特点
    假设这些排序算法想得到一个升序序列,长度为n。参考https://blog.csdn.net/qq_53414724/article/details/125016223https://zhuanlan.zhihu.com/p/602971700冒泡排序冒泡排序从头开始寻找相邻的元素,找到较大的元素放于后面,一直到数组末尾。循环n-1轮,每一轮都从0开始,但结束位置......
  • vue:通过数组循环创建表格,表格中有输入框需校验,最后需要一次性校验所有表格。
    表格内有form表单,form表单绑定的model数据类型必须为对象。所以需要先处理一下接口请求回来的数据。 表单需要校验,校验要用到ref,所以通过索引给每个表单生成自己专属的ref。 统一写一个校验规则,绑定至form表单中的rules中,随后在表格内的输入框form-item中绑定对应的规定。......
  • C语言 读取二进制文件中的数组
    获取最后n行数据把每个数组看成是1行#include<stdio.h>intmain(void){//示例数据成员大小最多20字节成员数量最多5个chars1[5][20]={"a1","a2","a3","a4","a5"};chars2[5][20]={"b1","b2",&qu......
  • 外汇110网:2023年第三季度FCA 共发布488则投资者警告
    11月3日,英国金融行为监管局(FCA)发布了最新的金融推广数据季度报告。该监管机构表示,人们可以通过该报告了解FCA如何提高整个市场标准,为金融消费者提供明确、公平且不具误导性的金融广告。在FCA的介入下,该季度期间共有5310则受监管公司的广告遭修改或撤销,其中39%的广告来自零售投资领......
  • COM服务项目中数据块(数组)的高效传输方式
    1.问题背景在《C#程序与COM服务程序传递数组和字符串的方式》一文中,我提供了数组的传递方式,是通过atlsafe.h中CComSafeArray模板类来实现的,但是在实际开发过程中发现,直接使用其自身提供的随机数据访问函数进行数据操作速度较慢,在大量传输数据时运行时间不可接受,所以本文记录......
  • js 数组按指定字段转map-list结构
    js数组按指定字段转map-list结构背景介绍在开发过程中经常会出现接口返回整个数组,我们需要将数组进行二次处理,如下格式按照不同功能模块(type)进行数据拆分原始数据constlist=[{"type":"red","id":1,"name":"a","count":1}, {"type":"red","......
  • sizeof结构体数组指针和sizeof数组指针的区别
    请思考一下以下代码输出的sizeof分别是多少?#include<stdio.h>typedefstruct{charname[100];unsignedcharage;}student_t,*student_ptr;intmain(intargc,char*argv[]){student_tstu={0};student_ptrpStu=&stu;charname[100]={0};......
  • 前缀和+差分数组
    一、一维数组度前缀和--固定数组查询区间和1.1定义对于给定一个数组arr(下标从0开始),它的前缀和S[i]表示从arr[0]到arr[i]元素总和。1.2构造前缀和S[i]=S[i-1]+arr[i-1]1.3应用-求某个区间的和计算区间[i,j]的元素和=>arr[i]+arr[i+1]+arr[i+2]+……+a......