欢迎光临散文网 会员登陆 & 注册

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   更新队列

最后 留在队列中的元素就是重复的元素位置,用数组长度减去队列中的长度得到唯一数的个数。

simple_26_remove_duplicate_num的评论 (共 条)

分享到微博请遵守国家法律