80.双指针实现删除有序数组中的重复项 II(中等)-面试经典150题
题目
给你一个有序数组 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] <= 104nums已按升序排列
解
使用k记录当前后指针q指向的元素值,由于q跳过下标0,所以当前元素k设置为nums[0]
times记录当前k出现次数,当出现的值与前面k值不同(2,2,2,3)3出现时,结束对2的数量统计,并根据k值出现的次数times进行nums[]的更新使用p记录新的数组Nums的最新可写入下标。
由于是出现新的不同值再对新数组进行更新所以最后一组需要循环结束后进行判断更新数组
class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""k=nums[0] #记录当前q指向的元素值,由于q跳过下标0,所以当前元素设置为nums[0]times=1 #记录当前k出现次数,大于二则下一个值p=0 #前指针#起始下标为1,终点下标为len(nums),步长为一,左开右闭for q in range(1,len(nums),1):if nums[q]==k:times+=1elif nums[q]!=k:#当遇到不同时写入前面值if times>=2:nums[p]=knums[p+1]=kp=p+2elif times==1:nums[p]=kp=p+1#k=nums[q]times=1#由于上面时遇到不同时写入前面值,所以五个不同数字只有四次不同,因此会少写入最后一个元素if times==1:nums[p]=kp=p+1else:nums[p]=knums[p+1]=kp=p+2return p
相关文章:
80.双指针实现删除有序数组中的重复项 II(中等)-面试经典150题
题目 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…...
基于大数据的B站数据分析系统的设计与实现
摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…...
机器学习模型预测贷款审批
机器学习模型预测贷款审批 作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…...
Linux实验记录:使用firewalld
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具…...
Vue之初识Vue CLI 脚手架
Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …...
[Tcpdump] 网络抓包工具使用教程
往期回顾 海思 tcpdump 移植开发详解海思 tcpdump 移植开发详解 前言 上一节,我们已经讲解了在海思平台如何基于静态库生成 tcpdump 工具,本节将作为上一节的拓展内容。 一、tcpdump 简介 「 tcpdump 」是一款强大的网络抓包工具,它基于…...
MongoDB常用命令
3.1 案例需求 存放文章评论的数据存放到MongoDB中,数据结构参考如下: 数据库:articledb 3.2 数据库操作 3.2.1 选择和创建数据库 选择和创建数据库的语法格式: use 数据库名称 如果数据库不存在则自动创建,例如&a…...
强敌环伺:金融业信息安全威胁分析——整体态势
从早期的Zeus和其他以银行为目标的特洛伊木马程序,到现在的大规模分布式拒绝服务(DDoS)攻击,再到新颖的钓鱼攻击和勒索软件,金融服务业已成为遭遇网络犯罪威胁最严重的行业之一。金融服务业的重要性不言而喻࿰…...
FreeRTOS简介
一 FreeRTOS简介 实时操作系统(Real-Time Operating System,RTOS)是一种专门设计用于处理实时任务的操作系统。它的主要作用是提供具有严格时间约束的任务调度和资源管理,以满足实时系统对时间的要求。 可分为硬实时和软实时&am…...
51单片机点灯
51单片机点灯 1.点亮LED灯 #include "reg52.h"sbit ledOne P3^7;void main() {//灯亮,给一个P3.7低电平ledOne 0; }给LED1对应标号的P3^7一个低电平,就能点亮LED灯2.LED灯闪烁 #include "reg52.h"sbit ledOne P3^7;void Delay…...
sql注入之union联合注入
一、Union注入 联合查询注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。列数相同 union 特性是显示两张表 我们就可以吧第一个参数变为------负--的 或者不存在的值 就行了 显示就…...
activiti解决实现ExecutionListener spring 自动注入@Autowired为null问题
在 Activiti 中,当使用 ExecutionListener 时,Spring 的自动注入机制(例如 Autowired)可能无法正常工作。这是因为 ExecutionListener 是由 Activiti 管理的,并不是由 Spring 管理的,所以无法通过 Autowire…...
【Lazy ORM 整合druid 实现mysql监控】
Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…...
【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集࿰…...
《动手学深度学习(PyTorch版)》笔记3.3
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...
OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…...
P8813 [CSP-J 2022] 乘方 题解
目录 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题目简化题目思路AC 代码 观前提示,此题解解法非正解,仅仅是卡过数据才 A C AC AC 的。正解请参考他人博客。 题目描述 小文同学刚刚接触了信息学竞赛…...
Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令
ubuntu 常用命令: 进入管理员模式: sudo su退出管理员模式: su <用户名>重启系统: rebootubuntu 复制文件夹下文件到其他文件夹下 cp -r source_folder/* destination_folder/删除文件夹下内容而不删除自身(进入到目录…...
保护医疗数据不受威胁:MPLS专线在医疗网络安全中的角色
随着数字技术的快速发展,医疗行业正在经历一场革命。从电子健康记录到远程医疗服务,数字化不仅提高了效率,也带来了前所未有的挑战--尤其是关于数据安全和隐私保护的挑战。在这样的背景下,如何确保敏感的医疗数据安全传输…...
Java面试题夺命连环问
如何实现一个ioc容器 配置文件配置包扫码路径递归包扫描获取.class文件反射确定需要 交给IOC管理的类对需要注入的类进行依赖注入 配置文件中指定需要扫描的包路径 定义一些注解,分别表示访问控制层,业务服务层,数据持久层,依赖…...
SimpleDateFormat 线程安全问题及修复方案
目录概述一、问题背景二、线程不安全的原理分析2.1 内部状态共享2.2 字段解析的非原子性2.3 异常的不可预测性三、问题复现代码示例四、修复与替代方案4.1 方案一:方法内创建(Thread-Local)4.2 方案二:使用 ThreadLocal 封装4.3 方…...
Ubuntu 24.04裸机部署Home Assistant避坑指南:从Python源码编译到HACS插件全流程
Ubuntu 24.04裸机部署Home Assistant全栈实战:从Python环境构建到智能生态整合 当智能家居逐渐成为现代生活的标配,如何打造一个高度定制化的控制中心成为技术爱好者的新追求。Home Assistant作为开源家庭自动化平台,以其强大的兼容性和灵活性…...
BsMax:让3D艺术家无缝切换Blender的专业级工具集
BsMax:让3D艺术家无缝切换Blender的专业级工具集 【免费下载链接】BsMax BsMax Blender Addon (UI simulator/ Modeling/ Rigg & Animation/ Render Tools and ... 项目地址: https://gitcode.com/gh_mirrors/bs/BsMax 你是否曾经因为Blender的操作习惯与…...
3步解锁音乐宝库:qmcdump助你轻松转换QQ音乐加密文件
3步解锁音乐宝库:qmcdump助你轻松转换QQ音乐加密文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否…...
如何快速实现PyJWT多语言应用:完整认证处理指南
如何快速实现PyJWT多语言应用:完整认证处理指南 【免费下载链接】pyjwt JSON Web Token implementation in Python 项目地址: https://gitcode.com/gh_mirrors/py/pyjwt PyJWT是Python中最流行的JSON Web Token(JWT)实现库,…...
ai结对编程,让快马帮你自动生成openclaw多轮对话任务规划应用骨架
最近在开发一个基于OpenClaw的多轮对话任务规划应用时,发现这类项目往往需要处理大量重复性代码框架搭建工作。比如要同时兼顾意图识别、状态管理、API调用和结果生成等多个模块,光是初始化项目结构就得花上大半天。好在尝试了InsCode(快马)平台的AI辅助…...
【ESP32-S3 深度实战】从小智AI底层移植到自定义LVGL表情:M5Stack CoreS3 避坑与架构指南
大家好,这里是企鹅的蚂蚁! 继上一篇打通了 M5Stack CoreS3 的 LVGL 模拟器与全双工音频后,最近我又开启了一项“硬核战役”:尝试将目前非常火的“小智 AI”底层框架移植进 CoreS3,并且完全弃用它原生的 UI,…...
PyFluent:CFD仿真的Python自动化革命
PyFluent:CFD仿真的Python自动化革命 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent PyFluent是Ansys Fluent的Python原生接口,它将传统CFD仿真从繁琐的GUI操作转变为代码…...
如何用智能抢票脚本告别演唱会门票焦虑
如何用智能抢票脚本告别演唱会门票焦虑 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 你是否曾经为心仪偶像的演唱会门票而彻夜难眠?DamaiHelper大麦抢票脚本正是为你量身定制的解决…...
xArm机械臂电气接口全解析:从末端法兰到RS485的实战避坑指南
xArm机械臂电气接口全解析:从末端法兰到RS485的实战避坑指南 在工业自动化领域,机械臂的电气接口设计往往是决定系统稳定性的关键因素。作为国内领先的协作机器人品牌,xArm以其出色的性价比和开放性接口设计赢得了众多工程师的青睐。但当我们…...
