[LeetCode]-27. 移除元素-26.删除有序数组中的重复项-88.合并两个有序数组

news2024/11/19 7:41:07

目录

27.移除元素

题目

 思路

 代码

26. 删除有序数组中的重复项

 题目 

思路

代码

88.合并两个有序数组

 题目

 思路

代码

总结


27.移除元素

27. 移除元素 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/remove-element/description/

题目

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

 示例:

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

 思路

 双指针src和dst,src上元素和val比较,当每次src上的元素和val相等时,src加加一次,dst不动,不相等时将src上的元素覆盖dst上的元素。

图解👇

 代码

int removeElement(int* nums, int numsSize, int val){
    int src=0 , dst=0;
    while(src<numsSize)
    {
        if(nums[src]!=val)
        nums[dst++]=nums[src++]; 
        else 
        src++;
    }
    return dst;
}

26. 删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/

 题目 

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

示例:

示例 1:

输入:nums = [1,1,2]
输出:2, nums = [1,2,_]
解释:函数应该返回新的长度 2,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

思路

双指针isize,依次比较,不相等时依次加加,相等时i加加再比较,直到不再相等时将i上值赋到size上,最后返回size+1为所得新数组元素个数。

图解👇

代码

int removeDuplicates(int* nums, int numsSize){
    int size = 0;
    for(int i = 1; i < numsSize; i++)
    {
        if(nums[size] != nums[i])
        {
            nums[++size] = nums[i];  
        }
    }  
    return size+1;
}

88.合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/merge-sorted-array/description/ 

 题目

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

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

 示例:

示例 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] 。

 思路

 三指针end1、end2、end,从end2和end1开始往前进行比较,并取大插入到end上。

注意:

  • end2先小于0的情况不需要考虑,因为此时合并已经完成了
  • end1先小于0的情况需要考虑,此时只需要将end2赋给end,并同时减减即可。

代码

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
    int end1=m-1,end2=n-1,end=m+n-1;
    while(end1>=0&&end2>=0)
    {
        if(nums1[end1]>nums2[end2])
        {
            nums1[end--]=nums1[end1--];
        }
        else
        {
            nums1[end--]=nums2[end2--];
        }
    }
    while(end2>=0)
    {
        nums1[end--]=nums2[end2--];
    }
}

总结

上面3道题均考察了数组中指针的运用,在遇到类似问题我们可以考虑利用双指针或三指针的思路来解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1155290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【快报】正在把教学视频搬运到B站和油管

hello 大家好&#xff0c;我是老戴。 熟悉我的同学知道&#xff0c;我从14年开始录制GIS相关的教学视频&#xff0c;之前是放到优酷上给大家下载&#xff0c;后期发现很多人把视频弄下来淘宝上卖&#xff0c;然后我就把视频整体放到了我自己的网站上。 随着视频录制的数量越来…

C++归并排序算法的应用:计算右侧小于当前元素的个数

题目 给你一个整数数组 nums &#xff0c;按要求返回一个新数组 counts 。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,6,1] 输出&#xff1a;[2,1,1,0] 解释&#xff1a; 5 …

2024年湖北武汉建筑企业三类人员安全员ABC怎么报考

2024年湖北武汉建筑企业三类人员安全员ABC怎么报考 武汉建筑企业报考三类人员&#xff0c;建筑单位归属地在武汉&#xff0c;且有建筑相关的一些资Z&#xff0c;才可以申报一定数量的三类人员、安全员ABC、建筑安全员ABC、专职安全员C证、建设厅安全员ABC证。 建筑企业-报考建…

在线开发平台是什么?有哪些优势?

目录 一、什么是在线开发平台&#xff1f; 二、企业为什么选择在线开发平台&#xff1f; &#xff08;1&#xff09;风险低&#xff0c;回报高 &#xff08;2&#xff09;可视化操作更形象 &#xff08;3&#xff09;易维护 三、在线开发平台功能展示 技术介绍 随着互联网和信息…

Jetpack:024-Jetpack中的滚动事件

文章目录 1. 概念介绍2. 使用方法2.1 高级事件2.2 低级事件 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中事件相关的内容&#xff0c;本章回中主要 介绍事件中的滚动事件。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01; 1. 概念介绍 我们在…

三相马达的电机故障维护

目录 电机故障维护​编辑 更换电机操作 三相电路 热继电器 今天继续小编的工作经验的分享&#xff0c;今天就说说遇到的问题吧&#xff0c;今天组立熔接机出现故障&#xff0c;后面部分出现了“咕噜噜”的杂声&#xff0c;走到后面一听是电机发出的声音。没有办法了就开始拆…

Py之transformers_stream_generator:transformers_stream_generator的简介、安装、使用方法之详细攻略

Py之transformers_stream_generator&#xff1a;transformers_stream_generator的简介、安装、使用方法之详细攻略 目录 transformers_stream_generator的简介 1、Web Demo T1、original T2、stream transformers_stream_generator的安装 transformers_stream_generator的…

【Linux虚拟机】 JDK、Tomcat、MySQL安装配置讲解

目录 一、上传安装包到服务器 二、JDK与Tomcat安装 2.1 解压安装包 2.2 配置JDK环境变量 2.3 配置Tomcat环境 三、MySQL安装配置 3.1 删除默认数据库 3.2 安装mysql安装包 3.3 mysql初始化操作 四、后端接口部署 4.1 导入项目.war 4.2 新建数据库 4.3 运行服务器项目…

白票某度自媒体混剪剪辑视频素材/爬虫软件说明文档

大家好&#xff0c;我是淘小白~ 软件&#xff1a;某度自媒体混剪素材爬虫软件 语言&#xff1a;Python 说明文档&#xff1a; 1、自定义关键词采集 2、采集百度aigc视频素材&#xff0c;经过测试&#xff0c;使用剪映的文字成片某度视频素材&#xff0c;可过头条的原创检测…

SPSS单样本t检验

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

OSFP基础实验

目录 题目&#xff1a;拓扑如下 实验步骤&#xff1a; 第一步&#xff1a;设计思路 第二步&#xff1a;搭建拓扑 第三步&#xff1a;配置命令 1&#xff09;IP地址配置 2&#xff09;OSPF配置 3&#xff09;R3部分接口做静默接口 4&#xff09;缺省路由 5&#xff09…

数据结构之“初窥门径”

目录 前言&#xff1a; 一&#xff0c;数据结构起源 二&#xff0c;基本概念和术语 2.1数据 2.2数据元素 2.3数据项 2.4数据对象 2.5数据结构 三&#xff0c;逻辑结构与物理结构 3.1逻辑结构 3.1.1集合结构 3.1.2线性结构 3.1.3树形结构 3.1.4图形结构 3.2物理结…

unity中meta文件GUID异常问题

错误信息&#xff1a; The .meta file Assets/Scripts/Editor/ConvertConfigToBinary/TxtConverter.cs.meta does not have a valid GUID and its corresponding Asset file will be ignored. If this file is not malformed, please add a GUID, or delete the .meta file and…

深度了解msvcr110.dll丢失的5个解决方法以及原因

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcr110.dll丢失”。这个错误提示通常出现在运行某些程序时&#xff0c;它意味着计算机无法找到所需的动态链接库文件。本文将详细介绍msvcr110.dll丢失的原因以及5个解决方法。 一、msvc…

[Unity+智谱AI开放平台]调用ChatGLM Tuobo模型驱动AI小姐姐数字人

1.简述 本篇文章主要介绍一下&#xff0c;在Unity端&#xff0c;集成智谱AI开放平台提供的chatglm模型api&#xff0c;实现AI聊天互动相关的功能。从智谱AI官方站点上看到&#xff0c;提供有chatglm turbo的公共模型服务&#xff0c;能够实现32K超长上下文&#xff0c;应用到我…

Python 中__name__ == ‘__main__‘使用说明

在学习C语言的时候&#xff0c;程序的运行是从main函数开始的&#xff0c;因此&#xff0c;功能代码一般写到main函数中&#xff0c;子程序如果想要调用&#xff0c;也需要在main函数中进行调用。 然而&#xff0c;Python语言中&#xff0c;程序从第一行就开始执行(定义函数除外…

不同源安装nginx

Nginx是一款高性能的Web服务器软件。在安装Nginx时&#xff0c;可以选择不同的安装源。 1.官方源&#xff1a;在官方网站下载Nginx的源代码&#xff0c;然后进行编译安装。 2.EPEL源&#xff1a;EPEL (Extra Packages for Enterprise Linux)源是针对Red Hat、CentOS、Scienti…

处理SAP资产折旧AFAB 过账报错:“科目 8019010100 要求一个成本会计分配”

会计在进行资产折旧AFAB时 报错如下所示&#xff1a; 原因分析&#xff1a; 折旧时没有把资产设置得成本中心带到过账凭证的成本中心字段中去。而资产中已经维护了成本中心了。 所以要在资产过账的科目分配中设置一下路径如下&#xff1a; 或者TCODE&#xff1a;ACSET科目设置这…

Java集合操作集锦

原文链接 Java集合操作集锦 集合是最为常见的容器&#xff0c;在日常工作之中经常用到&#xff0c;一些集合的常规操作以及不同的集合之间的转换&#xff0c;虽然看似是基础中的基础&#xff0c;但实践中会发现并不是那么显而易见的&#xff0c;特别是涉及boxing的时候&#x…

NFTScan 发展成为 PlatON 网络最大验证者节点之一

关于 PlatON 区块链&#xff1a;PlatON 是一个开放的金融基础设施&#xff0c;其核心是隐私保护计算。在 LatticeX 基金会的发起和推动下&#xff0c;目标是打造 Web3 时代领先的区块链平台。 PlatON 通过底层基础设施、支付清算系统、资产流通管理平台&#xff0c;构建去信任的…