删除排序数组的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 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;}
删除排序数组的重复项相关推荐
- python去重复排序_Python实现删除排序数组中重复项的两种方法示例
本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...
- 删除排序数组的重复项(两种解法思路分享)
删除排序数组中的重复项 题目描述: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使 ...
- leetcode第26题:删除排序数组的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 给定数组 ...
- Java/26. Remove Duplicates from Storted Array 删除排序数组的重复项
题目 . 代码部分(10ms 97.32%) class Solution {public int removeDuplicates(int[] nums) {int n = 0;boolean fl ...
- 删除排序数组中重复元素的方法
文章目录 1.删除重复元素,所有元素只保留一次 2.重复元素保留不超过2次 在上一篇文章中讨论了关于如何删除排序链表中重复元素的方法.那么如果底层数据结构是数组又将如何处理呢? 1.删除重复元素,所有 ...
- LeetCode刷题:删除有序数组的重复项详解
题目 Given a sorted array, remove the duplicates in place such that each element appear only once and ...
- 【每日一算法】删除排序数组中的重复项
微信改版,加星标不迷路! 每日一算法-删除排序数组中的重复项 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次 ...
- LeetCode题组:第26题-删除排序数组中的重复项
1.题目:删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.(注意这里提到了排序数组,也就是说数组是有序的.如果无序,我们又 ...
- LeetCode 25K 个一组翻转链表26删除排序数组中的重复项
如果问题或者其他方法还请分享,如加入打卡微信搜索bigsai回复进群一起打卡. K个一组翻转链表 题目要求 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小 ...
最新文章
- 阿里云服务器被挖矿病毒minerd***的解决方法
- Java不兼容类型问题解决方案
- linux禁止切换到root,linux禁止普通用户切换至root用户的实例讲解
- MATLAB基础教程(9)——高级积分运算、二重积分
- 报错AttributeError: Can‘t pickle local object ‘Worker.__init__.<locals>.<lambda>‘解决办法
- 问卷统计前奏【SPSS 072期】
- Pytorch下使用多GPU训练模型
- Schölkopf 、Bengio等新作解读:因果表征学习——连接因果和机器学习的桥梁
- 中标麒麟(NeoKylin7)下达梦数据库(DM8)的安装部署
- ZeroMQ XPub/XSub模式
- Android游戏开发之小球重力感应实现
- STM32:使用外部中断控制对射式红外传感器并计次
- 什么是视距传播,如何验证微波链路视线
- Android 高德地图的开发
- AVUE一些简单用法——avue-crud子表单
- 用Python分析《权力的游戏》
- STL rotate旋转算法
- Dubbo优雅上下线
- 计算机逻辑模块,常用时序逻辑电路模块 《计算机结构与 及逻辑设计》课件.ppt...
- 区块链结合物联网可研究方向
热门文章
- Java控制流程练习“黄金分割点”:寻找某两个整数相除,其结果离黄金分割点0.618最近 ,分母和分子不能同时为偶数,分母和分子 取值范围在[1-20]
- 北京空气质量指数 PM2.5
- 论文阅读(17)---2022 CVPR SC2-PCR二阶相似性测度
- 【手把手带你Godot游戏开发】FlappyBird:2.坠落吧,小鸟
- Kong 运行报 Error: don‘t know how to auth: 10
- 响应式营销型H5建站平台系统源码 可视化后台+自助建站+搭建部署教程
- 怎么安装消息队列服务器,什么是消息队列?我要安装搏途12应该怎么安装消息队列?...
- 2022浙江最新食品安全管理员模拟考试试题及答案
- matplotlib绘图工具包--数据可视化
- 华中科技大学计算机学院培养计划,计算机科学与技术专业本科培养计划-华中科技大学计算机学院.doc...