洞察在数字化转型过程中,信创推动企业有效整合资源,实现低成本、高效率的跨平台小程序运营。
930
2022-11-18
LeetCode80. 删除有序数组中的重复项 II
题目描述
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
LeetCode80. 删除有序数组中的重复项 II
思路
这道题目其实就是说,数组中如果存在重复元素的话,那么这个元素只能出现两次。像这种原地修改的题目,很容易就想到双指针
慢指针 slow : 指向当前即将放置元素的位置;则 slow - 1 是刚才已经放置了元素的位置。快指针 fast : 向后遍历所有元素;所以让 nums[fast] 跟 nums[slow - 2] 进行比较。每次都是只允许最多两个元素出现重复,这两个元素的位置在 slow - 1 和 slow - 2.从题目我们可以分析得出,前两个元素肯定是要保留下来的
流程图
代码
class Solution { public int removeDuplicates(int[] nums) { if (nums.length<=2){ return nums.length; } int slow=2; int fast=2; while (fast
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~