type
Post
status
Published
date
Jun 6, 2024
slug
summary
tags
算法
双指针法
数组
category
算法
icon
password
给你一个 非严格递增排列 的数组
nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑
nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:- 更改数组
nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。
- 返回
k。
示例 1:
示例 2:
思路:
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
为什么先 slow++ 再 nums[slow] = nums[fast]:
- [0,1,1,2]。fast遍历数组,fast第一次遇到的元素都是不重复的,第二次遇到的元素才是重复的应该被删除的,并且可以确保数组中不重复的元素是连续的。所以当 fast 指针找到一个新的不重复元素时,首先需要将 slow 移动到下一个位置(即 slow++)。
为什么 return slow + 1:
- slow 最终指向的是最后一个不重复元素的索引,因此返回的长度应该是 slow + 1。因为索引是从 0 开始的,所以如果 slow 是 2,表示有 3 个不重复的元素(索引 0, 1, 2)。
- Author:guderain
- URL:https://wangguanxi.space/article/15f2b727-a3a3-806a-80e9-c7b0b57f2755
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts

.webp?table=collection&id=92be88af-5f71-4631-9d3e-ee3bd53dcced&t=92be88af-5f71-4631-9d3e-ee3bd53dcced&width=1080&cache=v2)
