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)

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

相关推荐
chloe23338 分钟前
【动手学深度学习】笔记1:简单的线性回归
笔记·深度学习·线性回归
工业胶粘剂技术25 分钟前
单组分高温环氧结构胶 K-EP280 完整技术参数与工程选型分析
算法·制造
迷枫71227 分钟前
达梦 SQL 执行计划操作符与 TRACE、ET 学习笔记
笔记·sql
问心无愧05131 小时前
ctf show web入门106
笔记
星恒随风1 小时前
C++ 类和对象入门(三):拷贝构造、赋值运算符重载和深浅拷贝
开发语言·c++·笔记·学习
小欣加油1 小时前
Leetcode31 下一个排列
数据结构·c++·算法·leetcode·职场和发展
逆光的July1 小时前
Logback 学习笔记
笔记·学习·logback
数智工坊1 小时前
周志华《Machine Learning》学习笔记--第十三章--半监督学习
笔记·学习·机器学习
AOwhisky2 小时前
MySQL 学习笔记(第七期):高可用架构进阶与综合项目实战
linux·运维·笔记·学习·mysql·高可用·mha
_日拱一卒2 小时前
LeetCode:39组合总和
java·算法·leetcode·职场和发展