当前位置: 首页 > news >正文

力扣每日一题80:删除有序数组中的重复项||

题目描述:

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

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

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums 已按升序排列

通过次数

292.7K

提交次数

476.4K

通过率

61.4%

思路和题解:

如果是  删除有序数组中的重复项只保留一次  的话,我们只需从第二个数开始遍历i,k来记录去重后的个数,k=0,如果nums[i]!=nums[i-1],就nums[k++]=nums[i]。用往前覆盖的思想。

本题就是保留一次改成了保留两次,我们还是用往前覆盖的思想,只不过要加一个变量来判断当前遍历的数有没有超过两次。

代码:

class Solution {
public:int removeDuplicates(vector<int>& nums) {int k=0,n=nums.size();bool twice=false;// //text// cout<<"i=0:[";//     for(int j=0;j<n;j++)//         cout<<nums[j]<<" ";//     cout<<"]";//     cout<<"   k=:"<<k<<"  twice=:"<<twice<<endl;for(int i=0;i<n;i++){if(twice){if(nums[i]!=nums[i-1]){//前面数字出现两次但是当前是新的数字twice=false;nums[k++]=nums[i];}}else{if(i>0&&nums[i]==nums[i-1])twice=true;nums[k++]=nums[i];//这句换到if的上面就过不了}// //test// cout<<"i="<<i<<":[";// for(int j=0;j<n;j++)//     cout<<nums[j]<<" ";// cout<<"]";// cout<<"   k=:"<<k<<"  twice=:"<<twice<<endl;}return k;}
};

要注意的是,在最后一个else里面,nums[k++]=nums[i];一定要写到if的后面,写到上面就是会错,我也不知道为什么。如果有人知道的话可以评论区指出。

相关文章:

力扣每日一题80:删除有序数组中的重复项||

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...

SQL——插入已经存在的数据

现在有一套ID为9003的高难度SQL试卷&#xff0c;时长为一个半小时&#xff0c;请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info&#xff08;其表结构如下图&#xff09;&#xff0c;不管该ID试卷是否存在&#xff0c;都要插入成功&#xff0c;请尝试…...

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

一&#xff0c;工具资源下载 百度网盘资源下载链接地址&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…...

阿里云2核2G3M云服务器99元/年,新老同享,续费不涨价!

2023年阿里云双11活动正在火热进行中&#xff0c;推出了一款面向个人开发者、学生、小微企业的年度爆款套餐&#xff0c;2核2G3M云服务器99元/年&#xff0c;新老同享&#xff0c;续费不涨价&#xff01; 一、活动入口 活动地址&#xff1a;传送门>>> 二、活动详情 …...

UWB 技术在机器人和移动领域的应用题】

多年来&#xff0c;机器人生态系统不断增长&#xff0c;不同的应用程序也在不断增长。如今&#xff0c;机器人出现在许多不同的领域&#xff0c;例如私人家庭、商业场所、仓库和医疗场所。他们要么自主工作&#xff0c;要么与我们并肩工作&#xff0c;帮助我们完成任务。 根据…...

11.1 知识总结(JavaScript)

一、 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 EC…...

【Java 进阶篇】Java Web开发:实现验证码功能

在Web应用程序中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是一种常见的安全工具&#xff0c;用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现&#xff0c;要求用户在登录或注册时输入正确的字符。在这篇文章中&#xff0c;我们将详细介绍如何在Java Web…...

C++启动线程的方法

&#xff08;1&#xff09;函数指针 情况一&#xff1a;主线程有join&#xff0c;正常执行 #include <thread> #include <iostream>void work(int num) {while(num-- > 0) {std::cout << num << std::endl;} }int main() {std::thread t(work, 5);…...

Distilling the Knowledge in a Neural Network学习笔记

1.主要内容是什么&#xff1a; 这篇论文介绍了一种有效的知识迁移方法——蒸馏&#xff0c;可以将大型模型中的知识转移到小型模型中&#xff0c;从而提高小型模型的性能。这种方法在实际应用中具有广泛的潜力&#xff0c;并且可以应用于各种不同的任务和领域。 论文中首先介绍…...

JVM虚拟机:垃圾回收算法和垃圾回收器之间的关系

GC垃圾回收算法 在前面的课程中我们学习了GC垃圾回收算法,分别为: 引用回收算法 复制算法 标记清除算法 标记整理算法 这些垃圾回收算法是理论,有多种垃圾回收器可以实现这些理论。目前为止没有最完美的垃圾回收器,只能针对具体的情况选择最合适的垃圾回收器,进行分代收集…...

oracle sqlplus的使用 ,查询oracle实例名和服务名,查询oracle容器,切换oracle容器

Oracle的sqlplus是与oracle数据库进行交互的客户端工具&#xff08;oracle数据库自带的客户端工具&#xff09;&#xff0c;借助sqlplus可以查看、修改数据库记录。在sqlplus中&#xff0c;可以运行sql*plus命令与sql语句。 1。先使用root账户登陆系统后&#xff0c;使用su - o…...

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry&#xff0c;简称OTel&#xff0c;是一个与供应商无关的开源可观测性框架&#xff0c;用于检测、生成、收集和导出 遥测数据&#xff0c;如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具&#xff0c;用于接 收、…...

Python 自动化(十六)静态文件处理

准备工作 将不同day下的代码分目录管理&#xff0c;方便后续复习查阅 (testenv) [rootlocalhost projects]# ls day01 day02 (testenv) [rootlocalhost projects]# mkdir day03 (testenv) [rootlocalhost projects]# cd day03 (testenv) [rootlocalhost day03]# django-admi…...

C#学习系列之密闭类、接口、结构和类

C#学习系列之密闭类、接口、结构和类 啰嗦密闭类接口结构和类总结 啰嗦 基础学习 密闭类 类似string这种不想再继续继承和修改下去&#xff0c;使用sealed声明。 派生类中用sealed和override&#xff0c;无法继续重写。 接口 接口就是指定一组函数成员&#xff0c;而不实现…...

C++特殊类的设计

文章目录 设计一个类不能被拷贝请设计一个类&#xff0c;只能在堆上创建对象设计一个类只能在栈上去创建对象设计一个类不能被继承设计一个类&#xff0c;只能创建一个对象(单例模式)饿汉模式懒汉模式 单例模式总结饿汉模式懒汉模式 设计一个类不能被拷贝 拷贝一个类对象可以有…...

量化交易Copula建模应对市场低迷

一、简介 传统上,我们依靠相关矩阵来理解资产间的动态。然而,正如过去的市场崩盘所表明的那样,当风暴袭来时,许多模型都会陷入混乱。突然之间,相关性似乎趋于一致,而多样化这一经常被吹捧的风险管理口号似乎并没有提供什么庇护。 这种出乎意料的同步,即资产在经济低迷时…...

美创科技位居IDC MarketScape:中国数据安全管理平台市场「领导者」类别

近日&#xff0c;IDC发布《IDC MarketScape: 中国数据安全管理平台2023年厂商评估》 报告&#xff0c;报告从交付、产品特性、创新能力、研发速度、客户满意度等多个维度对国内厂商进行全面评估。美创科技列为『领导者』类别&#xff01; ◼︎ 报告中&#xff0c;从关键战略指…...

Go语言变量的使用

基本语法——变量 一、变量的使用 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。 所以变量的本质就是一小块内存&#xff0c;用于存储数据&#xff0c;在程序运行过程中数值可以改变 1.2 声明变量 var名称类型是声明单个变…...

在vitis中bit位赋值如何优化到一拍完成

使用vitis实现硬件代码时&#xff0c;经常遇到不是整拍对齐的情况&#xff0c;比如&#xff1a; ap_uint<128> a; ap_uint<64> b[10]; int pad,pos; /// 计算pos,pad ..... a(pos-1,0) b[pad](63,pos); a(63pos,pos) b[pad1]; a(127,64po…...

深度学习入门(二)之 简单手写数字识别实现

文章目录 引入MINIST数据脚本读入MNIST数据神经网络推理处理批处理 引入MINIST数据脚本 load_mnist为重要关注函数 params&#xff1a; normalize : 将图像的像素值正规化为0.0~1.0 one_hot_label : one_hot_label为True的情况下&#xff0c;标签作为one-hot数组返回 one-hot数…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...