[刷题班] LeetCode80. 删除有序数组中的重复项II
题目描述
思路:快慢指针
slow指针指向已经处理元素的下一个位置
因为数组有序,如果nums[fast] == nums[slow - 2],那么nums[fast] 肯定等于nums[slow - 1],那么此时这个数就出现了三次。此时slow保持不变,fast继续遍历。
关键:nums[fast] != nums[slow - 2]
方法一:
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 2) return nums.length;
// 从第三个元素开始
int slow = 2, fast = 2;
for (; fast < nums.length; fast ++) {
if (nums[fast] != nums[slow - 2]) {
nums[slow] = nums[fast];
slow ++;
}
}
return slow;
}
}
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17963597
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了