LeetCode初级算法之数组:26.删除排序数组中的重复项
删除排序数组中的重复项
题目地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例 1:
| 1 | 给定数组 nums = [1,1,2], | 
示例 2:
| 1 | 给定 nums = [0,0,1,1,1,2,2,3,3,4], | 
问题信息
- 输入:已排好序的数组
- 输出:去重后新数组的长度
- 额外条件:不创建额外空间直接修改原数组去重,不考虑新数组长度之后的元素
思考
很显然需要遍历扫描重复项,在元素不同的时候设置值。那么需要两个指针,一个指针i的功能是设置值的位置下标当前位置设置值后加1,第二个指针j扫面全部判断是否重复若不重复则在i指针的地方存下每次加1。
| 1 | /* | 
代码
| 1 | int i = 0; | 
首先数组长度是固定的所以设置不重复的值后后面的值还是存在的,按照题意不去创建新数组只要得到新数组的大小即可,按照例子去重后原数组nums = [0,1,2,3,4,2,2,3,3,4]。实际上就是得到遍历完之后坑位i就是新数组的最后一位它加一也就是新数组长度
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 木瓜煲鸡脚's blog!
 评论
