欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > LeetCode80.删除有序数组的重复项

LeetCode80.删除有序数组的重复项

2025/4/27 16:21:53 来源:https://blog.csdn.net/qq_61009660/article/details/144676176  浏览:    关键词:LeetCode80.删除有序数组的重复项

 10多分钟的时间就把一道中等题目做出来了,而且我还没有思考,边写边想。我的思路很简单,就是按照题目意思,从前往后遍历数组并统计相同的个数count,然后一直维护一个左指针,把遍历的数移到左指针上然后左指针向右移动,然后根据count的个数分情况处理,如果count小于2就把nums[i]移动到left上,如果count>2不用做任何事情,如果不同count改为1并把nums[i]放入left,最后返回left即可。

class Solution {public int removeDuplicates(int[] nums) {int n = nums.length;int left =1;int count =1;for(int i=1;i<n;i++){if(nums[i]==nums[i-1]){count++;if(count<=2){nums[left++]=nums[i];}}else{count=1;nums[left++]=nums[i];}}return left;}
}

看了一下题解,题解的做法也差不多,他是没有去统计数字的个数,而是直接和上上个保存的元素相比,若相同则不能再保存,若不同则保存。

class Solution {public int removeDuplicates(int[] nums) {int n = nums.length;if (n <= 2) {return n;}int slow = 2, fast = 2;while (fast < n) {if (nums[slow - 2] != nums[fast]) {nums[slow] = nums[fast];++slow;}++fast;}return slow;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词