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)

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

相关推荐
星轨初途18 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode
龙仔72518 小时前
RustDesk 完整笔记
运维·笔记·rust·远程工具·rustdesk
happyprince19 小时前
篇1:整体观 · bitsandbytes项目全貌解读
人工智能·算法
HJX_072419 小时前
嵌入式软件C语言八股文复习笔记5——编译、链接与底层硬核机制
c语言·开发语言·笔记
青梅橘子皮19 小时前
STL---map/set... “家族“详解(从使用到底层)(1)
数据结构·算法
让学习成为一种生活方式19 小时前
DNA 甲基化综述(模式、调控与功能)--Current Opinion in Plant Biology
算法
摇滚侠19 小时前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 监控指标 Metrics 阅读笔记
java·spring boot·笔记
-森屿安年-20 小时前
647. 回文子串
c++·算法·动态规划
噜~噜~噜~20 小时前
操作系统笔记-1.1.3 操作系统的特征
笔记·操作系统
皓月斯语20 小时前
P5736 【深基7.例2】质数筛
c++·算法·题解