【leetcode面试经典150题】-80. 删除有序数组中的重复项 II

news2024/11/13 10:04:55

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II

  • 1 题目介绍
  • 2 个人解题思路
    • 2.1 代码
    • 2.2 思路
  • 3 官方题解


1 题目介绍

在这里插入图片描述
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

2 个人解题思路

2.1 代码

class Solution {
    public int removeDuplicates(int[] nums) {
        int length=nums.length; 
        int cur=0;
        int index=nums[cur];
        for(int right=1;right<length;right++){
            int freq=1;
            while(index==nums[right]){
                if(freq<2){
                    freq++;
                    cur++;
                    nums[cur]=nums[right];
                }
                right++;
                if(right>=length){
                    return cur+1;
                }
                
            }
            cur++;
            nums[cur]=nums[right];
            index=nums[right];     
        }
        return cur+1;
    }  
}  

2.2 思路

每次比对index和right。一样交换跳过,用freq记录有多少个相同,<2时cur和right同时++,>=2时只有right++

3 官方题解

class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n <= 2) {
            return n;
        }
        int slow = 2, fast = 2;
        while (fast < n) {
            if (nums[slow - 2] != nums[fast]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}

初始slow和fast相同位置第三个元素,对比slow的前两个元素即第0号元素,如果fast于0相同,则fast移动,如果直到移至不同地方,slow移动,这样保证只有两个相同元素。slow指向真实数组的下标。

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

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

相关文章

MongoDB基础入门到深入(七)建模、调优

文章目录 系列文章索引十一、MongoDB开发规范十二、MongoDB调优1、三大导致MongoDB性能不佳的原因2、影响MongoDB性能的因素3、MongoDB性能监控工具&#xff08;1&#xff09;mongostat&#xff08;2&#xff09;mongotop&#xff08;3&#xff09;Profiler模块&#xff08;4&a…

2024电工杯数学建模竞赛选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;B<A&#xff0c;开放度&#xff1a;A<B。 以下为AB题选题建议及初步分析&#xff1a; A题&#xff1a;园区微电网风光储协调优化配置 题目描述&#xff1a; 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;需要…

18kw 机架式液冷负载的使用方法有哪些?

机架式液冷负载是一种高效、节能的散热设备&#xff0c;广泛应用于数据中心、服务器房等场所。它通过将冷却液循环流动&#xff0c;将热量从负载设备带走&#xff0c;实现设备的稳定运行。以下是18kw机架式液冷负载的使用方法&#xff1a; 1. 安装前准备&#xff1a;在安装机架…

【Linux】-Spark分布式内存计算集群部署[20]

注意&#xff1a; 本节的操作&#xff0c;需要前置准备好Hadoop生态集群&#xff0c;请先部署好Hadoop环境 简介 Spark是一款分布式内存计算引擎&#xff0c;可以支持海量数据的分布式计算。 Spark在大数据体系是明星产品&#xff0c;作为最新一代的综合计算引擎&#xff0c…

对于高速信号完整性,一块聊聊啊(8)

什么是Df和Dk 介电常数( D k )、介质损耗( D f ) 介电常数&#xff1a;材料如果在受到外部电场作用时能够储存电能&#xff0c;就称为“电介质”。比如说&#xff0c;电容可以存储电荷&#xff0c;而当电容平板中间填充有介质时&#xff0c;存储的电荷会更多。介电常数越大&a…

Nginx配置全攻略:掌握Nginx的高级技巧,提升你的Web服务器性能!

作为一个资深的技术人员&#xff0c;全面理解Nginx的配置是非常重要的。本文将详细介绍Nginx配置文件的各个部分&#xff0c;包括介绍、命令或语法、主要作用以及使用方法等。 一、Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器&#xff0c;它的…

解锁链上创意新时代,Story Protocol 如何颠覆内容创作与知识产权管理?

随着生成式人工智能&#xff08;AIGC&#xff09;的兴起&#xff0c;用户生产内容的浪潮正迅速席卷全球。然而&#xff0c;去中心化的链上生态并未彻底解决创作知识产权纠纷频发的难题。作为一个颇具潜力的平台&#xff0c;Story Protocol 正在引领内容创作的变革&#xff0c;为…

SaToken+SpringBoot+Redis前后端分离登录认证

目录 前言一、创建工程项目&#x1f38d;1.1 创建后端工程1.2 创建前端工程 二、业务代码&#x1f38a;后端代码前端代码 三、测试参考资料 前言 Sa-Token 是一款 Java 语言的权限认证框架&#xff0c;提供了灵活、高效、易用的权限认证和会话管理功能。它是 SpringBoot、Spri…

每日AIGC最新进展(9):定制化多主题文本到视频的生成、3D动漫角色生成、具有多种几何形状和纹理细节的3D高斯引导服装合成

Diffusion Models专栏文章汇总:入门与实战 DisenStudio: Customized Multi-subject Text-to-Video Generation with Disentangled Spatial Control 本文提出了一个名为DisenStudio的框架,用于定制化多主题文本到视频的生成。该框架旨在解决现有文本到视频生成模型在处理多主题…

vue从入门到精通(四):MVVM模型

一,MVVM MVVM&#xff08;Model–view–viewmodel&#xff09;是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑&#xff08;数据模型&#xff09;的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型&#xff0c;但是 Vue 的设…

C# GetManifestResourceStream 获取项目资源为null解决方案(亲测)

GetManifestResourceStream 获取项目资源为null 使用Stream s assembly.GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name resourceName) 获取资源文件&#xff0c;返回流为null&#xff0c;如图所示&#xff1a; 解决方案 设置资源文件的 属性&…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

【Qt】如何优雅的进行界面布局

文章目录 1 :peach:写在前面:peach:2 :peach:垂直布局:peach:3 :peach:水平布局:peach:4 :peach:网格布局:peach:5 :peach:表单布局:peach: 1 &#x1f351;写在前面&#x1f351; 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的。也就是每个控件所在…

ElasticSearch IK分词器的安装、词典扩展与停用

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;云原生与服务部署-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 ​编辑 1. 前言 2. IK分词器安装 3. IK分词器词典扩展与停用 4. 总…

基于Python flask的豆瓣电影数据分析可视化系统,功能多,LSTM算法+注意力机制实现情感分析,准确率高达85%

研究背景 随着数字化时代的到来&#xff0c;电影产业正迎来新的发展机遇和挑战。基于Python Flask的豆瓣电影数据分析可视化系统的研究背景凸显了对电影数据的深度分析和情感挖掘的需求。该系统功能丰富&#xff0c;不仅实现了多样化的数据分析功能&#xff0c;还结合了LSTM算…

算法2:滑动窗口(上)

文章目录 长度最小子数组无重复字符的最长子串[最大连续 1 的个数III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)将x减到0的最小操作数 长度最小子数组 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {in…

线段(线性dp)

题目链接&#xff1a;[TJOI2007] 线段 - 洛谷 思路&#xff1a; f[i][0]表示走完第i行且停在第i行的左端点最少用的步数 f[i][1]同理&#xff0c;停在右端点的最少步数。 那么转移就很简单了&#xff0c;走完当前行且停到左端点&#xff0c;那么一定是从右端点过来的&#x…

torch配置时出现问题

torch配置时出现如下问题&#xff1a; 可能原因&#xff1a; 1、下载的whl文件中python版本与本机上的python版本不匹配&#xff1b; 2、上图中的文件是64位的&#xff0c;而本机python是32位的&#xff0c;也无法匹配&#xff1b; 3、cuda的版本不匹配。

基于springboot实现的校园博客系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…