Remove Duplicates from Sorted Array II

来源:互联网 发布:南阳炳盛网络 编辑:程序博客网 时间:2024/06/05 04:29
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.

思路:

题目的要求就是说数组中重复的元素最多只有两个。按照之前的移除算法, 当nums[i]!=nums[i-1]的时候说明前后两个元素不一致,则直接放到nums[index++] 中。当nums[i]==nums[i-1] 的时候只有找到这个元素的最后一个重复的元素的位置,将其放在nums[index++]中就可以了,因为之前肯定已经加入了一个,只要再放一个就行。

class Solution {public:    int removeDuplicates(vector<int>& nums) {        //主要是有序的条件,则这个时候重复的元素是在一起的        if(nums.size()<2)            return nums.size();        int index=1;        for(int i=1;i<nums.size();i++)        {            if(nums[i]!=nums[i-1]) //不重复元素                nums[index++]=nums[i];            else            {                while(i<nums.size()&&nums[i]==nums[i-1]) ++i;                nums[index++]=nums[--i];            }        }        nums.resize(index);        return index;    }};


0 0
原创粉丝点击