微信改版,加星标不迷路!

每日一算法-删除排序数组中的重复项

作者:阿广

阅读目录

? 题目

? 解析

? 完整代码

1 题目


给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

1
2

示例 2:

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:


2 解析

(1)重点是排序数组,如果这道题没有排序的话,时间复杂度就应该是O(nlogn)级别的,由于排序了,就可以做到O(n)级别;

(2)另外由于要求在在使用 O(1) 额外空间的条件下完成,所以就不用考虑用字典来记录哪些元素出现了重复;由于是排序数组,所以如果出现重复,应该也是前后位置重复;为了节约时间,不要用删除列表元素的方式来清除重复元素,而是采用覆盖元素的方法确保前n位没有重复即可,所以可以采用如下代码完成。

此题运用的双指针办法,数组完成排序后,使用两个指针 i 和 j,其中 i 是慢指针,而 j 是快指针。只要 nums[i] = nums[j],我们就执行j++,以此来跳过重复项。

当 nums[j] != nums[i] 时,说过重复的值已经结束,因此我们必须把它nums[j]的值复制到 nums[i + 1]。我们重复上面的过程,直到 j 到达数组的末尾为止。

3 完整代码

4 结果

推荐阅读

今日问题

女生遇到心动男生,是追?还是不追?

打卡格式:打卡第n天,答:...

为什么打卡?戳下面你就知道了!

21/天/养/一/个/好/习/惯

【每日一算法】删除排序数组中的重复项相关推荐

  1. 初级算法——删除排序数组中的重复项

    题目来源 题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 ...

  2. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  3. leetcode初级算法1.删除排序数组中的重复项

    leecode初级算法1.删除排序数组中的重复项 仅为个人刷题记录,不提供解题思路 题解与收获 class Solution {public int removeDuplicates(int[] nu ...

  4. LeetCode 25K 个一组翻转链表26删除排序数组中的重复项

    如果问题或者其他方法还请分享,如加入打卡微信搜索bigsai回复进群一起打卡. K个一组翻转链表 题目要求 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小 ...

  5. LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  6. day04_ 最长回文子串 / 删除排序数组中的重复项

    day04 5. 最长回文子串 26. 删除排序数组中的重复项 ❗另:java中length,length(),size()区别 5. 最长回文子串 LeetCode链接 给定一个字符串 s,找到 s ...

  7. LeetCode题组:第26题-删除排序数组中的重复项

    1.题目:删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.(注意这里提到了排序数组,也就是说数组是有序的.如果无序,我们又 ...

  8. vue删除数组中的一条数据_删除排序数组中的重复项 II

    删除排序数组中的重复项 II题目 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改 ...

  9. 80. 删除排序数组中的重复项 II golang

    80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...

最新文章

  1. python基础学习笔记(六)
  2. 2019寒假作业二:PTA7-1币值转换
  3. Consul入门03 - 注册服务
  4. 计算机类公务员如何提升自己,大学毕业才发现:所学专业对考公务员如此重要,4类专业上岸率高...
  5. oracle 闪查询,Oracle的回闪查询
  6. 【中文信息处理】实验一_语料库统计_基于词表的分词
  7. 无线网络安全技术基础
  8. Python3 | UserWarning: findfont: Font family [‘SimHei‘] not found. Falling back to DejaVu Sans.
  9. python 获取foobar2000官网全部插件
  10. MIPI CSI转TTL/LVDS/BT656/BT601/BT1120
  11. DEBUG:谷歌学术无法创建账号
  12. IPS和IDS的区别
  13. 全球海底光缆及我国海底光缆分布
  14. 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维...
  15. ​NeurIPS 2022 | IPMT:用于小样本语义分割的中间原型挖掘Transformer
  16. C语言实现飞机售票系统
  17. 百度网盘电脑端看视频声音巨小的解决办法(windows10)
  18. nginx 配置之 proxy_pass参数详解
  19. Box2d VS Nape 学习笔记
  20. 能“读懂”古文还可反诈骗, 合合信息智能文字识别“黑科技”亮相2022WAIC

热门文章

  1. 神经网络学习到的是什么?(Python)
  2. 参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!
  3. 应届生失业率或继续上升?别怕,这份秋招指南请收好!
  4. 最近很火的最新一代国际视频标准 VVC 到底是什么?阿里专家为你揭秘
  5. 5G:新基建的压舱石,如何为新基建按下“加速键”?
  6. 清华大学提出APDrawingGAN,人脸照片秒变艺术肖像画
  7. 00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志
  8. 7行Python代码,搭建可以识花的机器学习App|视频教程
  9. 每一个开发人员都应该懂的 UML 规范
  10. 堪称神级的 Java 技术栈手册火了!