leetcode 80. 删除有序数组中的重复项 II
给你一个有序数组 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的数字使用双指针标记出现的区间,用区间的后面元素覆盖出现次数超出2的那个部分
代码
class Solution {public int removeDuplicates(int[] nums) {int cur=1,res=1,tail=nums.length;while (cur<tail){if(nums[cur]==nums[cur-1]){int next=cur+1;while (next<tail&&nums[next]==nums[cur]) next++;int curL=next-cur-1;System.arraycopy(nums,next,nums,cur+1,tail-next);tail-=curL;}cur++;}return tail;}
}
leetcode 80. 删除有序数组中的重复项 II相关推荐
- 14. Leetcode 80. 删除有序数组中的重复项 II (数组-同向双指针-快慢指针)
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条 ...
- 80. 删除有序数组中的重复项 II
80. 删除有序数组中的重复项 II Ideas 没啥技术含量,从后往前,check+delete. Code Python class Solution:def removeDuplicates(s ...
- 2022-2-11 80.删除有序数组中的重复项II
第一版: 问题在于,检测不到的时候赋值一次,检测到了赋值两次, 检测不到的情况会出现于数组中的数据发生了变化的时候. #include<iostream> #include<vect ...
- LeetCode 80. 删除排序数组中的重复项 II
1. 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...
- 2021-05-11(80. 删除有序数组中的重复项 II)
没想到双指针. class Solution {public int removeDuplicates(int[] nums) {int n=nums.length;if(n<=2){retur ...
- Leecode刷题【1数组专题4】80. 删除排序数组中的重复项II (以及通用解法)
Leecode刷题 [1数组专题4]80. 删除排序数组中的重复项II (以及通用解法) 题目: 思路 双指针法: (错误代码) 正解: 通用解法: 题目: 给你一个有序数组 nums ,请你 原地 ...
- 80. 删除排序数组中的重复项 II golang
80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...
- LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++
目录 题目 删除有序数组中的重复项 参考答案 题目 删除有序数组中的重复项|| 参考答案 题目 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ...
- 8. Leetcode 26. 删除有序数组中的重复项 (数组-同向双指针-快慢指针)
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件 ...
最新文章
- unbutu18.04.4 截图工具 flameshot
- 外包网络推广公司探索出高排名网站优化的技巧!
- 欲了解Android Studio,必先知道Gradle
- jzoj3852-单词接龙【0/1分数规划,负环】
- 使用地图触发功能处理相干事件
- CI集成 ckeditor 配置
- Redis的内存回收机制和数据过期淘汰策略
- 【Python】AttributeError: 'Series' object has no attribute 'order'
- 安卓颜色标签android
- xjad使用中的几个问题
- 使用福禄克CFP光纤测试仪进行Tier 1和Tier 2光纤测试
- Insert Guest Additions CD image 没有反应
- llg的农场(farm)
- 11-ES2015基础语法
- c语言菜鸟编译器,C语言菜鸟基础教程之Hello World
- 【学习笔记】彻底删除2345输入法
- EduCoder-Web程序设计基础-html5—结构元素-第3关:figure元素和figcaption元素的应用
- c语言单项选择题及答案,2011年计算机二级C语言单项选择题及答案解析精选3
- 数据中台的规划设计理念
- 初学画画怎么画线稿?学画线稿的方法有哪些?