去除已排序数组中的重复元素
来源:互联网 发布:如来神掌 知乎 编辑:程序博客网 时间:2024/06/04 18:53
题目描述
给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。
要求:
不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作。
例如:
给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]。
输入
一个已排序的数组,例如[1,1,2]。
输出
返回数组新的长度,例如length=2。
快慢指针法
设置fast指针遍历数组,slow指针指向不重复元素的下一位。
public static int removeDuplicates(int[] nums){ if (nums.length < 1) return nums.length; int slow = 1; for (int fast = 1; fast < nums.length; fast++) { if (nums[fast] != nums[slow - 1]) { nums[slow++] = nums[fast]; } } return slow;}
动画演示:
扩展
去除已排序数组中的重复元素,保留指定位数。
public static int removeDuplicatesN(int[] nums, int repeatN){ if (nums.length <= repeatN) return nums.length; int index = repeatN; for (int i = repeatN; i < nums.length; i++) { if (nums[i] != nums[index - repeatN]) { nums[index++] = nums[i]; } } return index;}
参考文章
- remove-duplicates-from-sorted-array
0 0
- 去除已排序数组中的重复元素
- 删除已排序数组中的重复元素
- 去除已排序链表中的重复元素
- 去除数组中的重复元素
- 去除数组中的重复元素
- 去除数组中的重复元素
- 去除数组中的重复元素
- 算法系列--去除排序数组中的重复元素
- [算法]删除已排序数组中的重复元素
- 去除数组的重复元素并排序
- 【LeetCode题目记录-10】已排序的数组去除重复元素
- 去除js数组中的重复元素
- java去除数组中的重复元素
- 去除列表/数组中的重复元素[转]
- 小白也刷题---leetcode去除数组中的重复元素
- 去除数组中的重复元素---hashset
- 去除有序数组中的重复元素
- 去除js数组中的重复元素
- 关于虚拟机测试双网卡绑定高可用的问题
- 2-SAT 解法浅析
- 重建二叉树
- 第九章 接口
- 对于自定义类,重写equals方法和hashCode方法的技巧
- 去除已排序数组中的重复元素
- 1325 - Distributing Chocolates
- 任务1---打招呼
- 第八章 多态
- [LeetCode]263. Ugly Number&264. Ugly Number II
- 简易版扫雷
- Launchpad中图标的删除
- HDU 5876 Sparse Graph(bfs求解补图中的单源最短路)——2016 ACM/ICPC Asia Regional Dalian Online
- 第七章 复用类