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

来源:互联网 发布:演技知乎' 编辑:程序博客网 时间:2024/05/22 17:10

题目

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;}
0 0