LeetCode刷题笔记第80题:删除有序数组中的重复项 II

LeetCode刷题笔记第80题:删除有序数组中的重复项 II

题目:

删除升序数组中超过两次的元素后的数组长度

想法:

使用快慢指针的方法完成,使用快指针遍历整个数组,使用慢指针完成相同元素最多保留两个。在快指针遍历到超过两个相同元素时,慢指针停止移动,等到快指针遍历的不同的元素时,将不同元素赋值给慢指针所在位置并向后移动一位,直至快指针遍历完整个数组,慢指针所在的位置即为删除后的数组长度。

python 复制代码
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        slow = 0
        for fast in range(len(nums)):
            if slow < 2 or nums[fast] != nums[slow - 2]:
                nums[slow] = nums[fast]
                slow += 1
        return slow

时间复杂度:O(N)

空间复杂度:O(1)

本题中的想法主要是利用快指针遍历数组找到所有不超过两个的相同元素,并将这些元素赋值给慢指针所指,因为是在原数组上的原地操作,所以慢指针所指新数组没有产生额外的空间占用

相关推荐
帅小伙―苏4 分钟前
力扣42接雨水
前端·算法·leetcode
AI科技星20 分钟前
精细结构常数α的几何本源:从第一性原理的求导证明、量纲分析与全域验证
算法·机器学习·数学建模·数据挖掘·量子计算
三品吉他手会点灯23 分钟前
C语言学习笔记 - 1.C概述 - 本讲内容概述
c语言·笔记·学习
6Hzlia25 分钟前
【Hot 100 刷题计划】 LeetCode 287. 寻找重复数 | C++ 数组判环 (快慢指针终极解法)
c++·算法·leetcode
MegaDataFlowers26 分钟前
26.删除有序数组中的重复项
算法
故事和你912 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
是孑然呀2 小时前
【笔记】激光定位-激光切割指针偏移设置
笔记
吴可可1232 小时前
C#合并首尾相连多段线实战
算法·c#
KMDxiaozuanfeng3 小时前
卡梅德生物技术快报|SPR 技术应用|基于 SPR 亲和力的中药活性成分筛选系统实现与数据分析
科技·算法·面试·考试
中屹指纹浏览器3 小时前
2026指纹浏览器性能优化实战:多开稳定性与资源占用控制全解析
经验分享·笔记