题目描述:
Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3]
,
Your function should return length = 5
, with the first five elements of nums being 1
, 1
, 2
, 2
and 3
. It doesn't matter what you leave beyond the new length.
我的思路:
用一个count值计数,如果当前元素比count-2位置的元素大,就把那个位置换成当前元素,并且count++。
我的代码:
class Solution:
def removeDuplicates(self, nums):
count = 0
for x in nums:
if count < 2 or x > nums[count-2]:
nums[count] = x
count += 1
return count
Discuss:
int removeDuplicates(vector<int>& nums,int k) {
if(nums.size()<k) return nums.size(); // if array size is less than k then return the same
int i,j;
for(i=k,j=k ; i<nums.size();i++)
if(nums[j-k]!=nums[i]) nums[j++]=nums[i];
return j;
}
学到:
Discuss中给出了这类问题的统一处理方法,k是最多能重复的次数。