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

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

示例 1

给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。

示例 2

给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。你不需要考虑数组中超出新长度后面的元素。

说明:

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

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

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

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {print(nums[i]);
}

我的思路是使用双指针:
指针1:标注下一个存放元素的位置;
指针2:标注下一个遍历到的位置;
代码如下:

public int removeDuplicates(int[] nums) {if(nums == null) {return 0;}else if (nums.length<2) {return nums.length;}int p = 1;for(int i=0;i<nums.length;i++) {if(p == nums.length) {return i+1;}while(p<nums.length && nums[i] == nums[p]) p++;if(p == nums.length) {return i+1;}while(p<nums.length-1 && nums[p] == nums[p+1]) p++;nums[i+1] = nums[p++];}return -1;}

2019-03-09-算法-进化(从排序数组中删除重复项)相关推荐

  1. leetcode 从排序数组中删除重复项(C++)

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

  2. 从排序数组中删除重复项

    参考: https://blog.csdn.net/qitong111/article/details/79729639 https://blog.csdn.net/qq_25677349/artic ...

  3. 从排序数组中删除重复项-Python-LeetCode

    题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...

  4. 【每日一算法】删除排序数组中的重复项

    微信改版,加星标不迷路! 每日一算法-删除排序数组中的重复项 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次 ...

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

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

  6. python【力扣LeetCode算法题库】26-删除排序数组中的重复项

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

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

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

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

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

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

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

最新文章

  1. Hyper-V 配置网络 (高级篇)
  2. 基于MATLAB的IIR滤波器设计与实现
  3. cf1523B. Lord of the Values
  4. vue获取div中的值_一篇文章看懂Vue.js的11种传值通信方式
  5. Lua - 空值判断的几种情况
  6. 将您的SQL Server工作负载迁移到PostgreSQL –第4部分
  7. aws搭建深度学习gpu_选择合适的GPU进行AWS深度学习
  8. 输入月份自动生成excel考勤表,周末高亮,内容可以勾选
  9. 振动信号的短时傅里叶变换分析
  10. 【第十一篇】Flowable中的各种网关
  11. MTCNN + Deep_Sort实现多目标人脸跟踪之MTCNN人脸检测部分(一)
  12. 关于限制同一个IP访问频率和限制用户登录时候输错密码次数限制(超过即限制)
  13. 【codevs1422】河城荷取 二分+dinic
  14. 【LeetCode系列】数的奥秘之幂数与完全平方数
  15. 楚留香哪个服务器最新,楚留香官服和混合服哪个好 哪个服务器的人多
  16. Android 信鸽推送集成
  17. 产生粗体字的html标签,html字体加粗用css设置文字粗体样式
  18. 基于STM32智能手环心率计步器体温显示设计
  19. 以太网网络协议Ethernet II 帧分析
  20. 解决分区助手无法分区问题

热门文章

  1. 字节跳动offer流程多长时间_字节跳动-运营实习生-面经实录(已Offer??)
  2. 数据库oracle 别名不能更新,数据库oracle改成mysql后Hibernate不能使用别名问题
  3. 软件配置管理(三)软件配置管理核心功能
  4. 大开眼界!终于等到这部每一帧都是壁纸的纪录片!
  5. 绝对不能错过!2009~2019 高中数学联赛11年真题解析
  6. mysql查找最高分最低分_sql查询最高分、最低分和平均分语句
  7. php运算符优先级题目,详解php运算符优先级
  8. python if main_Python:if __name__ == '__main__'
  9. php 获取对象所有成员变量,PHP成员变量获取对比
  10. java接口那一节是哪的知识_Java中的接口知识汇总