simple_26_remove_duplicate_num
2023-07-25 08:24 作者:reacherway | 我要投稿

题目描述:
给你一个 升序排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
考虑 nums
的唯一元素的数量为 k
,你需要做以下事情确保你的题解可以被通过:
更改数组
nums
,使nums
的前k
个元素包含唯一元素,并按照它们最初在nums
中出现的顺序排列。nums
的其余元素与nums
的大小不重要。返回
k
。
举例:
输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
思路:
通过队列(先进先出)数据结构,使用map 来判断当前数据是否已经重复。
当不是重复元素:
1 map 标记一下
2 判断当前队列是否还有元素
如果有空位置
2.1 当前位置需要入队,空出这个位置。
2.2 出队,用当前的值去填充出队的这个位置。
2.3 更新队列
最后 留在队列中的元素就是重复的元素位置,用数组长度减去队列中的长度得到唯一数的个数。