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

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

问题

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

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

说明:

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

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

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

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

解答

class Solution {public int removeDuplicates(int[] nums) {int n = nums.length;int left = 2;if(n < 2){return n;}for (int right = 2; right < n; right++) {if(nums[right] != nums[left-2]){nums[left] = nums[right];left++;}}return left;}
}

总结

同样利用指针,相对于删除只出现一次的数而言,删除两次之后的数字,只需要将left与right改为2,间隔为2。另外,删除一次的数链接如下:

https://blog.csdn.net/m0_63078058/article/details/136298600?spm=1001.2014.3001.5501

http://www.lryc.cn/news/308466.html

相关文章:

  • Java底层自学大纲_数据结构和算法篇
  • 群晖NAS配置WebDav结合内网穿透实现公网访问本地影视资源
  • Vue3报错Promise executor functions should not be async.
  • (正规api接口代发布权限)短视频账号矩阵系统实现开发--技术全自动化saas营销链路生态
  • 【Redis】redis通用命令
  • mysql服务治理
  • opencv--使用直方图找谷底进行确定分割阈值
  • dolphinscheduler海豚调度(四)钉钉告警
  • Java-Safe Point(安全点)
  • 大数据旅游数据分析:基于Python旅游数据采集可视化分析推荐系统
  • 打造智能汽车微服务系统平台:架构的设计与实现
  • 机试指南:Ch5:线性数据结构 Ch6:递归与分治
  • 展厅设计的理念是什么
  • springboot 定时任务备份mysql数据库
  • PMP考试之20240301
  • 什么是MAC地址? win10电脑查看MAC地址的多种方法
  • vue3中的基本语法
  • Timeplus-proton流处理器调研
  • H3C防火墙安全授权导入
  • 使用 OpenCV 通过 SIFT 算法进行对象跟踪
  • SHELL 脚本: 导出NEO4j DUMP并上传SFTP
  • Vue 封装一个函数,小球原始高度不固定,弹起比例不固定、计算谈几次后,高度低于1米
  • 外地人能申请天津公租房吗?2024天津积分落户租房积分怎么加?
  • 毕业设计——基于springboot的聊天系统设计与实现(服务端 + 客户端 + web端)
  • 公告栏功能:自动弹出提醒,重要通知不再错过
  • 网络编程学习
  • centos物理电脑安装过程(2024年1月)
  • Web自动化测试平台开发---Automated_platform
  • mybatis-plus: 多租户隔离机制
  • 用Socks5代理游戏,绕过“网络海关”去探险