leetCode-80-Remove-Duplicates-from-Sorted-ArrayII
题目描述(中等难度)
“>26 题的思想,慢指针指向满足条件的数字的末尾,快指针遍历原数组。并且用一个变量记录当前末尾数字出现了几次,防止超过两次。
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 1;
int count = 1;
int max = 2;
for (; fast < nums.length; fast++) {
//当前遍历的数字和慢指针末尾数字不同,就加到慢指针的末尾
if (nums[fast] != nums[slow]) {
slow++;
nums[slow] = nums[fast];
count = 1; //当前数字置为 1 个
//和末尾数字相同,考虑当前数字的个数,小于 2 的话,就加到慢指针的末尾
} else {
if (count < max) {
slow++;
nums[slow] = nums[fast];
count++; //当前数字加 1
}
}
}
return slow + 1;
}
时间复杂度:O(n)。
空间复杂度:O(1)。
解法二
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com