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

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 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。

你不需要考虑数组中超出新长度后面的元素。
题目解析:数组是有序的,意味着相同元素必须是连着的,java中数组没有删除方法,需要进行替换才能剔除重复元素。

思路:双指针法

慢指针指向当前有序无重复数组的最后一个元素,快指针遍历后边元素,将找到的无重复项赋值给slow指针维护

public static int deleteDuplicates(int[] nums){if(nums==null){return 0;}int  numSize= nums.length;if(numSize==0){return 0;}int slow=0;//快指针最多移动倒数第二个元素,fast+1<numSizefor(int fast=0;fast<numSize-1;fast++){//两个挨着的元素不相等,将慢指针前移,并通过赋值替换重复元素if(nums[fast]!=nums[fast+1]){//slow永远指向有序不充复数组的最后一位slow++;nums[slow]=nums[fast+1];System.out.println(Arrays.toString(nums));}}//slow需要加1才表示长度否则是下标return slow+1;}

当题目更新为

使得每个元素最多出现两次

public static int twoDot(int[] nums){if(nums==null){return 0;}int  numSize= nums.length;if(numSize<=2){return numSize;}//将slow前一位与fast比较,不等就slow前移,然后将slow下标元素替换为fast下标元素int slow=1;for(int fast=2;fast<numSize;fast++){if(nums[fast]!=nums[slow-1]){slow++;nums[slow]=nums[fast];}}System.out.println(slow);return slow +1;}

删除排序数组的重复项相关推荐

  1. python去重复排序_Python实现删除排序数组中重复项的两种方法示例

    本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...

  2. 删除排序数组的重复项(两种解法思路分享)

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

  3. leetcode第26题:删除排序数组的重复项

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

  4. Java/26. Remove Duplicates from Storted Array 删除排序数组的重复项

    题目 . 代码部分(10ms 97.32%) class Solution {public int removeDuplicates(int[] nums) {int n = 0;boolean fl ...

  5. 删除排序数组中重复元素的方法

    文章目录 1.删除重复元素,所有元素只保留一次 2.重复元素保留不超过2次 在上一篇文章中讨论了关于如何删除排序链表中重复元素的方法.那么如果底层数据结构是数组又将如何处理呢? 1.删除重复元素,所有 ...

  6. LeetCode刷题:删除有序数组的重复项详解

    题目 Given a sorted array, remove the duplicates in place such that each element appear only once and ...

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

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

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

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

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

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

最新文章

  1. 阿里云服务器被挖矿病毒minerd***的解决方法
  2. Java不兼容类型问题解决方案
  3. linux禁止切换到root,linux禁止普通用户切换至root用户的实例讲解
  4. MATLAB基础教程(9)——高级积分运算、二重积分
  5. 报错AttributeError: Can‘t pickle local object ‘Worker.__init__.<locals>.<lambda>‘解决办法
  6. 问卷统计前奏【SPSS 072期】
  7. Pytorch下使用多GPU训练模型
  8. Schölkopf 、Bengio等新作解读:因果表征学习——连接因果和机器学习的桥梁
  9. 中标麒麟(NeoKylin7)下达梦数据库(DM8)的安装部署
  10. ZeroMQ XPub/XSub模式
  11. Android游戏开发之小球重力感应实现
  12. STM32:使用外部中断控制对射式红外传感器并计次
  13. 什么是视距传播,如何验证微波链路视线
  14. Android 高德地图的开发
  15. AVUE一些简单用法——avue-crud子表单
  16. 用Python分析《权力的游戏》
  17. STL rotate旋转算法
  18. Dubbo优雅上下线
  19. 计算机逻辑模块,常用时序逻辑电路模块 《计算机结构与 及逻辑设计》课件.ppt...
  20. 区块链结合物联网可研究方向

热门文章

  1. Java控制流程练习“黄金分割点”:寻找某两个整数相除,其结果离黄金分割点0.618最近 ,分母和分子不能同时为偶数,分母和分子 取值范围在[1-20]
  2. 北京空气质量指数 PM2.5
  3. 论文阅读(17)---2022 CVPR SC2-PCR二阶相似性测度
  4. 【手把手带你Godot游戏开发】FlappyBird:2.坠落吧,小鸟
  5. Kong 运行报 Error: don‘t know how to auth: 10
  6. 响应式营销型H5建站平台系统源码 可视化后台+自助建站+搭建部署教程
  7. 怎么安装消息队列服务器,什么是消息队列?我要安装搏途12应该怎么安装消息队列?...
  8. 2022浙江最新食品安全管理员模拟考试试题及答案
  9. matplotlib绘图工具包--数据可视化
  10. 华中科技大学计算机学院培养计划,计算机科学与技术专业本科培养计划-华中科技大学计算机学院.doc...