您的位置:首页 > 编程语言 > C语言/C++

[C语言][LeetCode][80]Remove Duplicates from Sorted Array II

2016-12-12 14:22 267 查看

题目

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 leetcode