力扣第80题-删除有序数组的重复项Ⅱ
一、题目描述给你一个有序数组nums请你原地删除重复出现的元素使得出现次数超过两次的元素只出现两次返回删除后数组的新长度。不要使用额外的数组空间你必须在原地 修改输入数组并在使用 O(1) 额外空间的条件下完成。二、代码实现int removeDuplicates(int* nums, int numsSize) {if (numsSize 2)return numsSize;int slow 2;for (int fast 2; fast numsSize; fast) {if (nums[fast] ! nums[slow - 2]) {nums[slow] nums[fast];slow;}}return slow;}三、思路用快慢两个指针当数组小于等于2时直接返回。2的时候将快慢指针指向2如果快指针指向的数不等于慢指针指向的元素的前两位则代表已经进入下一个元素这个时候将快指针的值赋予慢指针快慢指针都向前一位。当快指针的值等于慢指针的值则只需快指针向前一位如果相同的值超过2个时就只有快指针移动直到遇到下一个元素。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2548135.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!