「力扣」26. 删除有序数组中的重复项

DDR5内存ODT模式全解析:5种状态与实战配置指南(附时序图) 本文深入解析DDR5内存的片上终端电阻(ODT)机制,详细阐述了其五种核心状态(终结电阻禁用、RTT_WR、RTT_NOM_RD、RTT_NOM_WR、RTT_PARK)的定义、切换时序与工作原理。通过解读JESD79-5规范中的时序图,并提供基于模式寄存器的实战配置指南与代码示例,帮助硬件工程师和系统开发者优化信号完整性,解决高负载下的稳定性问题,并实现性能与功耗的最佳平衡。 阅读详情

「力扣」26. 删除有序数组中的重复项

题目描述

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

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = [...]; // 输入数组
int[] expectedNums = [...]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
    assert nums[i] == expectedNums[i];
}

如果所有断言都通过,那么您的题解将被 通过。

示例 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 。不需要考虑数组中超出新长度后面的元素。

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums 已按 非严格递增 排列

题解

解法1

题目要求“原地”删除,也就是说不允许开辟额外空间,空间复杂度要求是O(1),返回元素中唯一元素的个数,比如示例2中:nums = [0,0,1,1,1,2,2,3,3,4],无重复个数是5,并且要求前5个数字就是无重复数字,结果就是[0,1,2,3,4,_,_,_,_,_,_],后面下划线处是什么数字不关心。

我考虑如下:
题目说数组长度是>=1的,所以不为空,1个字符不可能重复,只有从第二个字符才可能重复,所以我定义一个K代表不重复元素的个数,同时他也是后续不重复元素放置的位置,再定义一个preValue,默认是第一个元素的值,从第二个元素开始向后循环,如果与preValue相同,也就是重复元素,什么都不做,继续向后遍历,如果不同,则将该位置元素赋值到k处,并且k要加1,代码如下:

class Solution {
    public int removeDuplicates(int[] nums) {
        int k = 1;
        int preValue = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] != preValue) {
                nums[k++] = nums[i];
                preValue = nums[i];
            }
        }
        return k;
    }
}

提交到力扣:

image.png

很棒!,看了下官方题解后,感觉官方的解法更好,preValue没必要,为什么呢?因为这是一个有序数组,只需要比较当前值与前面的值是否相同即可,所以修改下程序。

class Solution {
    public int removeDuplicates(int[] nums) {
        int k = 1;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] != nums[i - 1]) {
                nums[k++] = nums[i];
            }
        }
        return k;
    }
}

提交到力扣:

image.png

官方答案使用while跟上面的for循环没有本质差别。

class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}
【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包 - 当配置网卡为monitor 模式的情况下,可以使用 wireshark来抓取空口报文; - 如果WiFi采用非Open加密方式,则从报文中仅能分析到 802.11协议层,更底层(如DHCP、ICMP、TCP等)被加密,此时可以使用 wireshark 来完成解密。 - 解密之后,可以通过icmp、tcp等关键词过滤报文。 阅读详情

相关推荐

MobaXterm破解14个会话限制的保姆级教程(附Python环境配置指南)

本文提供了MobaXterm破解14个会话限制的详细教程,并深入讲解了如何配置稳定的Python环境以支持相关脚本运行。通过理解软件授权机制、安全实践步骤以及许可文件的应用,帮助用户解除会话数量限制,实现高效的远程服务器管理与自动化运维。

weixin_29211309的博客 1637

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

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

qq_42742845的博客 897

代付系统/代付系统源码/支付宝代付系统/API代付系统

简介: 其他站买的,没有做测试,源码是JAVA的,附带了安装文档,需要的拿无售后 源码下载地址https://www.skpan.cn/2QnIARSZDxG 代付系统/代付系统源码/支付宝代付系统/API代付系统 系统流程: 后台开通代理——开通商户——商户做代付(后台手工提交和 api 提交两种方式) 1、纯代付系统 2、支持个人支付宝全自动 3、支持单笔/批量/API接口方式代付 4、支持白名单、谷歌验证 5、收付款模式采用自动回调/自动转账 一、运营平台 商户管.

刀客源码网 5575

leetcode面试经典150题“26删除有序数组中的重复项”Java解答

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

wwwwwmmn的博客 474

PMOS缓启动电路设计实战:用LTspice优化上电时序,把60A冲击降到15A

本文通过一个实战案例,深入解析了PMOS缓启动电路如何有效抑制上电冲击电流。文章指出,低ESR电容是导致冲击电流飙升的元凶,并详细阐述了利用LTspice仿真工具,通过优化栅极电阻和栅源电容等参数,将高达60A的冲击电流成功降至15A的设计与优化过程,为电源开关电路设计提供了可复用的方法论。

onion的博客 896

告别龟速!实测Copernicus Dataspace下载Sentinel-2数据的3个提速技巧(附Workspace批量操作)

本文分享了在Copernicus Dataspace平台高效下载Sentinel-2遥感数据的3个实用技巧,包括网络传输层优化、浏览器与API调优以及Workspace批量操作。通过这些方法,用户可将下载速度提升300%以上,特别适合科研人员和团队处理大规模数据需求。

weixin_30706691的博客 178

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

删除有序数组中的重复项。

微笑,来自内心坚不可摧的自信。 496

【运筹学】什么是基变量?对于线性规划问题中“基”概念的理解(3月3日学习笔记)

在学习《线性规划与目标规划》的过程中,课程的主讲老师郭韧给出了对于基概念的定义如下图 图片来源:运筹学(中国大学mooc网) 由此我产生了几个疑惑:1.如何理解B是线性规划问题的一个基?2.为什么说最多有CnmC_n^mCnm​个基呢?     1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基? 在回答第一个...

纸羊同学的博客 3万+

删除有序数组中的重复项(最优解 时间复杂度On,空间复杂度O1)

删除有序数组中的重复项 时间 空间 复杂度的最优解 关联双指针的知识点

ajsjnnn的博客 1355

基于PLC的茶叶揉捻机自动控制系统设计【附代码】

茶叶揉捻是初茶加工过程中的一道关键工序,通过揉捻可以使鲜茶叶成条、碎茶及叶组织细胞破损等。影响茶叶成条率、碎茶率和叶组织细胞破损的主要因素包括揉捻时间、压力和揉捻桶转速。为了提高茶叶品质的稳定性和减轻工人的劳动强度,本文提出了一种基于PLC自动控制技术的茶叶揉捻机控制系统设计。📊 PLC自动化设计 | 毕业设计指导 | 工业自动化解决方案。✅ 具体问题可以私信或查看文章底部二维码。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1341

解密电商大促背后的智慧:LSTM与ARIMA模型的双剑合璧

举个例子,如果某东发现某款新推出的电子产品在促销前夕搜索量突然暴涨,虽然这个产品没有过去的销售记录,但LSTM模型可以结合用户对类似产品的行为模式、实时的市场反馈,迅速捕捉到这些变化,并预测这款产品在大促期间的需求会急剧上升。想象一下,如果预测不准确,备货不足,商品很快就卖光了,大量用户可能在促销期间买不到想要的商品,这不仅让用户失望,还会影响某东的品牌形象。这种情况就像我们看一部很长的电视剧,看得越久,前面的情节可能就越来越模糊,到最后有些关键的情节细节都忘了,影响了对整个剧情的理解。

小蒋聊技术 2090

LeetCode刷题---26. 删除有序数组中的重复项(双指针)

大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第2篇文章,主要讲解是LeetCode26. 删除有序数组中的重复项(双指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。

JMFive的博客 344

2026 年 3 月青少年软编等考 C/C++ 三级测试题解析

摘要 本文包含三部分内容: 单选题(10题):考察C++基础语法和数据结构知识,涉及vector、栈、队列的操作和特性。 判断题(10题):测试对动态数组、栈、队列、字符串操作的理解,包括内存管理、访问方式和函数返回值等。 编程题(1题):模拟火车站售票窗口排队场景,要求根据输入输出各窗口的排队情况,重点考查队列的实际应用和边界条件处理。 答案解析详细,涵盖常见编程考点,适合检验基础知识的掌握程度。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 251

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

思路:只要不和前面的数一样就可以移动指针,进行赋值。

zengxuan151168的博客 560

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【LeetCode每日一题】26. 删除有序数组中的重复项

【LeetCode每日一题】26. 删除有序数组中的重复项今日题目26题,每日一题微信交流群可以点击右下角:合作转载->联系我,备注:刷题,拉你入群。题目:给你一个有序数组 nums...

Francis的博客 404

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。当 j 越界时,此时 [0, i] 范围就是无重复元素的原地数组,长度为 i+1。// 长度正确的期望答案。的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度 2,并且原数组。函数应该返回新的长度 5,并且原数组。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。

优快云 871

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【LeetCode:26】删除有序数组中的重复项(简单)

此时循环判断结束后,nums数组中,区间 [ 0,left ) 之间就是所有唯一的数,因为left记录的是数组的下标,所以。因为第一个数肯定是唯一的,所以right起始位置在1即可。不需要考虑数组中超出新长度后面的元素。如果所有断言都通过,那么您的题解将被。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。函数应该返回新的长度 2。的前两个元素被修改为 1。函数应该返回新的长度 5。的前五个元素被修改为 0。数组的唯一元素的数量。

weixin_73735141的博客 647

26-LeetCode刷题之删除有序数组中的重复项

此题博主提供了两种方法,一种是暴力删除法,一种是经典的双指针法,附有图解,快来学习吧!

qq_52363432的博客 316

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

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]

qq_38473254的博客 758

LeetCode第26题_删除有序数组中的重复项

这是一道经典的数组处理题目:考察双指针技巧考察原地修改数组考察空间效率解题要点:利用数组已排序的特性使用双指针降低时间复杂度原地修改避免额外空间优化思路:可以添加快速判断相邻元素考虑特殊情况的优化注意边界条件的处理。

qq_40263592的博客 1202

【力扣】26. 删除有序数组中的重复项

第二个整数(i)的区间为1到nums.length,代码主要一个思想将重复的整数覆盖掉,然后获取不重复整数的个数,但是需要考虑特殊情况,即数组为空或者数组只有一个元素。

xiannvytt的博客 255

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

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

luoyepiaoxue2014的博客 468

LeetCode每日刷题 No.26

废物的记录刷题blogLeetCode No.26 删除有序数组中的重复项自己答案的思路官方答案解释代码部分自己对答案代码的其他理解快慢指针的其他应用1. 判断一个链表是否存在环2.找到一个有序链表的中位数 LeetCode No.26 删除有序数组中的重复项 第一眼看这道题感觉是一道挺简单的题,不过我自己代码功底还是太差了,20多行代码得出了答案,虽然都能得出答案,但是一看官方答案的6行代码还是傻眼了,不得不说自己还是太菜了啊。 自己答案的思路 一个已经排序好的数组,我第一想法就是前一个数和后一个数相比,

breakman的博客 285

力扣刷题26——删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k。

Betty_textbook的博客 274

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

使用快慢指针法,快指针fast遍历数组,如果nums[slow] == nums[fast],则说明两个元素相同,fast继续遍历,slow不动;如果nums[slow]!= nums[fast],则说明两个元素不同,进而可以将新元素nums[fast]覆盖上nums[slow]的下一个元素nums[slow+1],以达到去重的目的。(如果这两个不同的元素是相邻的,此时nums[fast]自己给自己覆盖也没关系)非严格递增‌是指序列中的元素从前往后看是递增的,但允许某些元素相等。

2202_75924820的博客 346

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

leetcode-26. 删除有序数组中的重复项 题目: 代码: #include <iostream> #include <vector> using namespace std; int removeDuplicates(vector<int>& nums) { int t=0; int len; len=nums.size(); for(int i=0;i<len-1;i++){ if(nums[i]==nums[i+1]){ f

qq_42250642的博客 135
上一篇: 21. 合并两个有序链表
下一篇: 「力扣」27. 移除元素
「已注销」
博客等级 码龄3年 128粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值