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)

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

相关推荐
siy233315 分钟前
[c语言日记] 数组的一种死法和两种用法
c语言·开发语言·笔记·学习·链表
AI 嗯啦30 分钟前
数据结构深度解析:二叉树的基本原理
数据结构·算法
和光同尘@1 小时前
66. 加一 (编程基础0到1)(Leetcode)
数据结构·人工智能·算法·leetcode·职场和发展
CHEN5_021 小时前
leetcode-hot100 11.盛水最多容器
java·算法·leetcode
songx_991 小时前
leetcode18(无重复字符的最长子串)
java·算法·leetcode
max5006002 小时前
实时多模态电力交易决策系统:设计与实现
图像处理·人工智能·深度学习·算法·音视频
其古寺2 小时前
贪心算法与动态规划:数学原理、实现与优化
算法·贪心算法·动态规划
rit84324993 小时前
基于灰狼算法(GWO)优化支持向量回归机(SVR)参数C和γ的实现
c语言·算法·回归
蒋士峰DBA修行之路3 小时前
实验五 静态剪枝
数据库·算法·剪枝
蒋士峰DBA修行之路3 小时前
实验六 动态剪枝
数据库·算法·剪枝