做网站便宜的公司,外贸网站空间,郑州网站建设公司锐客科技,wordpress自带hosts文件题目#xff1a;
给你一个有序数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使得出现次数超过两次的元素只出现两次 #xff0c;返回删除后数组的新长度。
不要使用额外的数组空间#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…题目
给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。
不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
提示
nums 已按升序排列
思路使慢指针指向的数字和其向前数两个的位置上的数据与快指针指向的数字不相等
Python 解法
class Solution:def removeDuplicates(self, nums: List[int]) - int:def solve(k):u 0for x in nums:if u k or nums[u - k] ! x:nums[u] xu 1return ureturn solve(2)
C解法
class Solution {
public:int removeDuplicates(vectorint nums) {int n nums.size();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;}
};
注要求最多k个重复数字 则前k个可以不必检查