80. 删除排序数组中的重复项 II(JS实现)

JS 去掉数组中重复项 NULL 博文链接:https://onestopweb.iteye.com/blog/2324006 立即下载

1 题目

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定 nums = [1,1,1,2,2,3],
函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,1,2,3,3],
函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3 。
你不需要考虑数组中超出新长度后面的元素。

2 思路

这道题的思路主要考察双指针,一个指针i用于遍历整个数组,一个指针j用于构造新数组,当没有重复出现2次的数时,两个指针i和j同时向后移动。当出现重复2次以上的数时,i指针向后移动寻找不同的数,而j指针位置暂时不动,当i指针找到目标数时,将其赋值j指针所在的位置,然后两指针继续同时向后移动,重复上述过程

3代码

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    if (nums.length <= 2) return 2;

    let i = 1;
    let j = 1;
    let count = 1;   //用于记录某个数重复的次数
    while(i < nums.length) {
        if (nums[i-1] === nums[i]) {
            if (++count > 2) {   //当重复超过2次时,i指针开始向后寻找不同的数
                i++;
                continue;
            }
        } else {    //找到不同的数,计数重归为1
            count = 1;
        }
        nums[j++] = nums[i++];
    }

    return j;
};
GameFramework框架详解之 框架总览 一.前言 目前市场上有很多优秀个开源框架,比如ET,GameFramework,DBFramework,StrangeIOC,Loxodon-Framework,KSFramework,xluaFramework等等。其中要说规范的话,不得不说GameFramework还是不错的,当然很多新手看到后会觉的有点复杂,写一个小小的功能,不得不套用一堆东西,继承一堆接口,感觉不知所措,不能随心所欲的去撸代码。其实这个框架就是为了约束新手的行为的,让我们面向接口编程,遵循“开闭”的设计原则来写代码,方便后期的扩 阅读详情

相关推荐

实战分享:如何用Dify和MaxKb实现文档智能切分与高效检索(附代码解析)

本文详细介绍了如何结合Dify和MaxKB构建文档智能切分与高效检索系统。针对传统全文检索的不足,提出了结构感知的文档切分方案,通过解析文档层级关系并构建标题链,实现了精准的章节级检索。文章包含完整的代码实现,涵盖文档解析、智能切分、向量化策略及双索引优化,并分享了性能调优和生产环境实践经验。

qsc90123456的博客 546

用js实现数组去除重复的元素方法

数组中去除重复的元素的方法

qq_64180670的博客 2437

库存预测新思路:AI架构师的图神经网络应用

用图神经网络(GNN)解决传统库存预测的“关联盲区”,让预测从“孤立商品”转向“商品网络”。传统库存预测的痛点分析;GNN的核心概念(图结构、消息传递);GNN在库存预测中的算法原理与代码实战;实际应用场景与未来趋势。背景:用超市老板的烦恼引出传统方法的问题;核心概念:用“商品朋友圈”比喻GNN的图结构和消息传递;算法原理:用数学公式和Mermaid流程图讲清楚GNN的工作流程;实战:用PyTorch Geometric写一个简单的库存预测模型;

AI Python 编程之道的博客 959

【数组】删除重复元素(最多重复两次)

只能允许最多重复两次,修改数组删除多余元素,并且返回删除后的数组长度。 大致思路: 刚开始想的是一个哈希数组来存出现次数,然后判断>2次的时候通过前移后面的部分来删除该元素。确实时间复杂度是O(n^2)太高了。 还是要仔细读题!这是一个sorted array,也就是判断一个元素是否出现了两次,只需要看它前面的前面那个元素是否和它一样,一样则不要它,不一样则说明它还没有重复出现到两...

It's the Climb 1766

如何在 VMware Workstation 虚拟机中利用 Nvidia 显卡的硬件加速功能

本文详细介绍了在VMware Workstation虚拟机中配置Nvidia显卡硬件加速的完整流程。重点包括:检查硬件兼容性、安装显卡驱动、编辑VMware配置文件启用PCI直通功能(需修改config.ini文件参数)、为虚拟机分配PCI设备等关键步骤。文章特别强调了配置注意事项,如系统资源需求、BIOS设置要求、驱动兼容性等问题,并建议操作前备份数据。通过此方法可实现虚拟机对Nvidia显卡的直接调用,适用于需要GPU加速的计算场景。

qq_39777550的博客 6702

微电网系列: 位移因数DPF&&功率因数PF&&过激&&欠激

文中对比了位移因数(DPF,仅基波相位)与功率因数(PF,含谐波影响)的差异,指出PF=DPF×DF(畸变因数)。过激/欠激状态对应无功功率控制:过激(容性,电流超前,抬升电压)与欠激(感性,电流滞后,抑制电压)。PCS(如光伏逆变器)需逆向调节电网无功状态,过激时发出容性无功,欠激时吸收感性无功,以维持电压。

云纳星辰怀自在 1174

java之返回数组中的重复元素

给定一个数组,找出并返回数组中的重复元素。 思路: 通过遍历数组,一旦发现重复元素就将该元素存入一个新的数组中,但要注意,存入之前要检查新数组中是否存在该元素,如果新数组中存在该元素,那么就不再存入,还要注意记录重复元素的个数哦!! //代码实现 public class Demo1 { public static void main(String[] args) { int[] arr = {1,3,1,4,3,1,5,7,3,42,4,12,1,11,7,9,7,9}; int[] n

qq_49529322的博客 1332

SpringCloud 2025王炸更新!GraalVM原生镜像启动速度提升90%实战

在当今云原生和Serverless架构盛行的时代,应用的启动速度已成为衡量技术栈竞争力的关键指标。传统SpringCloud应用由于依赖JVM的动态类加载、反射等机制,启动时间通常超过30秒,在Kubernetes滚动更新和函数计算场景下成为显著性能瓶颈。2025年,SpringCloud迎来里程碑式更新,通过深度集成GraalVM原生镜像技术,实现了启动速度提升90%的惊人突破,让SpringCloud应用正式进入"秒级启动"时代。

小筱在线博客 1099

javascript数组去重的10种方法

亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧!...

LLL3189860667的博客 4658

一张图看懂中国民航适航审定体系:从适航司到审定中心,到底谁管谁?

本文深入解析中国民航适航审定体系,从立法层到执行层的完整链条,揭示适航管理的金字塔结构和核心流程。涵盖适航司、审定中心等关键机构职能,以及型号审定、生产许可审定等全生命周期管理,展现中国适航体系的特色实践与创新探索。

weixin_30896511的博客 476

杰理外挂flash使用教程(三): 打包提示音到外部flash(2)

本教程详细介绍了提示音制作与程序配置的全流程规范。提示音制作要求包括:英文命名(8字符内)、单声道转换、标准目录结构(cpu/br23/tools/)及使用user_tone_g.bat脚本生成res.bin资源文件。程序配置需修改:1)启用NOR_FS文件系统;2)调整存储空间;3)配置外置Flash参数;4)增强下载脚本追加资源参数。测试阶段建议替换开机提示音验证功能,扩展开发可参考tone_player.c的索引播放逻辑。所有操作均配有图示说明,关键配置需修改对应头文件和脚本参数。

qq_42014563的博客 587

如何高效删除 JavaScript 数组中的重复元素?

在日常编程中,我们经常会遇到数组去重的问题。今天,我们就来聊聊如何用JavaScript来优雅地解决这个问题。问题描述给定一个包含重复元素的数组,我们希望创建一个新的数组,其中只包含原始数组中的唯一值。例如,如果我们有一个数组 [1, 2, 3, 2, 4, 1, 5],期望的输出应该是 [1, 2, 3, 4, 5]。方法一:最原始的方法我们可以使用最简单的方法——嵌套循环来解决这个问题。遍历每...

前端达人 1141

基于MATLAB的数字滤波器之低通滤波器

本文首先介绍了数字低通滤波器的概念和原理,其次论述了低通滤波器的技术指标和设计步骤,最后给出了数字低通滤波器应用于信号去噪的MATLAB代码。

总结论文中的算法并给出论文的复现代码 3万+

leetcode 80. 删除排序数组中的重复项 II JavaScript实现

leetcode 80. 删除排序数组中的重复项 II JavaScript实现问题描述代码 问题描述 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 输入:nums = [1,1,1,2,2,3] 输出:5, nums = [1,1,2,2,3] 解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为

ryyzxf的博客 186

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Leetcode 80. 删除有序数组中的重复项 II

解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输入:nums = [1,1,1,2,2,3]

li_yizhixiaowukong的博客 925

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

angularjs 元素重复指定次数_LeetCode 题解 | 80. 删除排序数组中的重复项 II

力扣 80. 删除排序数组中的重复项 II(点击查看题目)力扣​leetcode-cn.com题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, ...

weixin_39662578的博客 67

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

80. 删除排序数组中的重复项 II

学习双指针的应用 题目描述 算法 我们使用了两个指针,iii 是遍历指针,指向当前遍历的元素;jjj 指向下一个要覆盖元素的位置。 同样,我们用 countcountcount 记录当前数字出现的次数。countcountcount 的最小计数始终为 1。 我们从索引 1 开始一次处理一个数组元素。 若iii指向的元素与jjj指向的元素相同,即 nums[i]==nums[j],则 count+1count+1count+1。 若 count>2count > 2count>2,则说.

稚嫩的劢劢的博客 238

leetcode刷题记录15——删除排序数组中的重复项 II

80. 删除排序数组中的重复项 II 难度:中等 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,.

小白的学习路 231

leetcode 80 :删除排序数组中的重复项 II【JavaScript/JS解法】

先上题: 给定一个增序排列数组nums,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 一个循环解决 var removeDuplicates = function (nums) { for (let i = 0; i < nums.length; i++) { nums.splice( nums.indexOf(nums[...

前端小白学习中... 221

力扣80:删除排序数组中的重复项 II

通过上述双指针的方法,我们可以在 O(n) 的时间复杂度内解决这个问题,同时不使用额外的空间,满足了题目的要求。

m0_61476090的博客 950

26. 删除排序数组中的重复项/27. 移除元素/80. 删除排序数组中的重复项 II

26. 删除排序数组中的重复项 class Solution { public: //剑指offer面试3不一样,这题用的双指针Ori,New int removeDuplicates(vector&amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp; nums) { int len = nums.size(); if (len &amp;a

Gunther的博客 858

[快慢指针][数组]leetcode80:删除排序数组中的重复项 II (medium)

题目: 80. 删除排序数组中的重复项 II 题解: 快慢指针 代码如下: class Solution { public: //题解:快慢指针,sp表示慢指针,用来记录可以覆写数据的位置;fp表示快指针,用来遍历整个数组 int removeDuplicates(vector<int>& nums) { if(nums.size(...

algsup 498

Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II

核心解法是双指针法,利用数组 “有序” 的特性,通过慢指针标记唯一元素位置、快指针遍历找新元素,实现原地去重。边界条件要处理:数组为空时直接返回 0。最终返回值是slow + 1(因为慢指针是索引,从 0 开始),数组前slow + 1个元素就是去重后的结果。这个解法完全满足题目 “原地修改、保持相对顺序、返回唯一元素个数” 的所有要求,也是这道题的最优解。核心解法:双指针法,核心判断条件从 “和慢指针当前位置不同” 升级为 “和慢指针前一位位置不同”,实现 “最多保留 2 次” 的逻辑。

im_AMBER的博客 677

[80] 删除有序数组中的重复项 II js

题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。不需要考虑数组中超出新长度后面的元素。

gulilugi的博客 179

(js)leetcode 80. 删除排序数组中的重复项 II

题目: 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = remo

M_Eve的博客 139

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

方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。是以“引用”方式传递的。删除重复出现的元素,使得出现次数超过两次的元素。// 根据你的函数返回的长度, 它会打印出数组中。// 在函数里修改输入数组对于调用者是可见的。为什么返回数值是整数,但输出的答案是数组呢?不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。, 并且原数组的前五个元素被修改为。, 并且原数组的前七个元素被修改为。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。请注意,输入数组是以。

weixin_57011178的博客 431
上一篇: 79. 单词搜索(JS实现)
下一篇: 81. 搜索旋转排序数组 II(JS实现)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值