**80. Remove Duplicates from Sorted Array II 删除排序数组中的重复项 II
2024-09-01 11:27:14
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. 思路
由于数组是已经排序的,所以可以利用这一条件。因为要求每个数最多重复2次。所以如果当前数据长度小于等于2,则不动,i指针往前走。如果大于2的数组,当前的元素如果比其前面的第二个数大则一定可以加入。
3. 解题
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i = 0 # 后端索引
for n in nums: # 对于每个元素
if i<2 or n>nums[i-2]: # 如果元素数目<2则直接加入,如果当前元素比前面第2个元素大,则说明不重复,予以加入
nums[i] = n
i+=1
return i
4. 总结
26. Remove Duplicates from Sorted Array 是此题型的第一题:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
即【1,1,2,3,5,7,7,8】返回6 ,因为【1,2,3,5,7,8】。思路仍然是一样的。什么时候当前元素可以放到前面去?如果元素长度<1肯定可以直接放。那此外如果当前元素比i指向的元素大,说明没有重复也可以直接放入!
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i = 0
for n in nums:
if i<1 or n>nums[i-1]:
nums[i] = n
i+=1
return i
最新文章
- 2019年台积电进军AR芯片,将用于下一代iPhone
- maven报错非法字符:\65279 错误
- DB2常识
- Callable与Future、FutureTask的学习 &; ExecutorServer 与 CompletionService 学习 &; Java异常处理-重要
- SGU 532. Building Foundation 暴力
- OpenGL第8,9讲小结
- TextField笔记
- 1.3. chromium源代码分析 - chromiumframe - 窗口系列
- 转: 【Java并发编程】之五:volatile变量修饰符—意料之外的问题(含代码)
- 【微软大法好】VS Tools for AI全攻略(3)
- 【阿里聚安全&#183;安全周刊】Python库现后门 可窃取用户SSH信息|Facebook再曝300万用户数据泄露
- 将BUG管理工具(禅道)部署到服务器(测试服务器、云服务器)
- 普通用户使用Docker
- mysql5.6 sql_mode设置为宽松模式
- BZOJ 4584 luogu P3643: [Apio2016]赛艇
- java 线程Thread 技术--volatile关键字
- hdu5672 尺取
- Angular4学习笔记(六)- Input和Output
- FlinkCEP - Complex event processing for Flink
- Ubuntu16.04安装OpenCV3.2以及PCL1.8
热门文章
- 安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决
- Django创建管理员账号
- Kotlin反射重要组件与流程详解
- 2019年牛客多校第一场 C题Euclidean Distance 暴力+数学
- 【MySQL】测试MySQL表中安全删除重复数据只保留一条的相关方法
- Alpha冲刺(9/10)——2019.5.2
- nginx和tomcat配置负载均衡和session同步
- Vue移动端项目如何使用手机预览调试
- Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs
- sping boot 集成shiro