题目
Remove Duplicates from Sorted Array II
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.
标签
Array、Two Pointers
难度
中等
分析
题目意思是给定一个排序了的整形数组,返回一个所有数字最多出现两次的数组。
解题思路是,遍历数组,用count变量统计新的数组大小,因为最多能出现两次,所以不管遍历数组前面两个是什么数字,都放到新的数组里存储,即nums[count++] = nums[i];然后继续往后遍历,如果当前的数字nums[i]比nums[count-2]大,说明这两个数字不相同,那就把nums[i]所对应的值放到新的数组里存储,直到遍历结束。
C代码实现
int removeDuplicates(int* nums, int numsSize) {
int i=0, count=0;
for(i=0; i<numsSize; i++)
{
if(count<2 || nums[i]>nums[count-2])
nums[count++] = nums[i];
}
return count;
}