摘要:题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。给定数组函数应该返回新的长度并且原数组的前两个元素被修改为。
题目描述
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。解题思路
采用双指针方式处理。
初始指针 i, j 位置为 0
指针 j 先向右移动
比较指针 i,j 元素是否相同,若指针i,j元素相同则指针 j 继续向右移动;反之将指针 j 元素复制到指针 i + 1 处元素
当指针 j 移动到数组末尾时则停止
其流程如下图所示:
实现public static int solution (int[] nums) { int i = 0, j = 0; while (true) { // 指针 j 向右移动 j++; // 指针 j 移动到数组末尾则退出,说明数组元素都判断了去重 if (j >= nums.length) { break; } if (nums[j] == nums[i]) { // 指针 i, j 元素相同,说明重复元素; // 指针 j 继续向右移动 continue; } else { // 指针 i, j 元素不相同;则将指针 j 元素复制到 指针 i 后一位,这样就保证指针 i 后元素不重复 nums[i + 1] = nums[j]; // 指针 i 向右移动,继续处理 i++; } } return i + 1; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73476.html
前端LeetCode刷题 下面是已刷的题目的目录。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,欢迎关注。 数组类 26 删除排序数组中的重复项 27 移除元素 35 搜索插入位置 66 加1 80 medium 删除排序数组中的重复项2 88 合并两个有序数组 167 两数之和II - 输入有序数组 118 杨辉三角 169 easy 求众数 1...
摘要:题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。示例给定函数应返回新长度并且原数组的前五个元素被修改为。也就是说,不对实参做任何拷贝在函数里修改输入数组对于调用者是可见的。 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在...
摘要:描述给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次并返回新的长度。最后慢指针指向的元素及前面所有元素都是不重复的。 描述: 给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例: 给定数组: nums = [1,1,2], 你的函数应该返回新...
摘要:在线网站地址我的微信公众号完整题目列表从年月日起,每天更新一题,顺序从易到难,目前已更新个题。这是项目地址欢迎一起交流学习。 这篇文章记录我练习的 LeetCode 题目,语言 JavaScript。 在线网站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公众号: showImg(htt...
摘要:月下半旬攻略道题,目前已攻略题。目前简单难度攻略已经到题,所以后面会调整自己,在刷算法与数据结构的同时,攻略中等难度的题目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道题,目前已攻略 100 题。 一 目录 不折腾的前端,和咸鱼有什么区别...
阅读 1596·2021-09-08 10:42
阅读 3585·2021-08-11 10:23
阅读 3915·2019-08-30 14:10
阅读 2703·2019-08-29 17:29
阅读 3070·2019-08-29 12:50
阅读 616·2019-08-26 13:36
阅读 3419·2019-08-26 11:59
阅读 1470·2019-08-23 16:23