您的位置:首页 > 其它

leetcode80. Remove Duplicates from Sorted Array II

2016-04-27 22:50 225 查看
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.

解题思路:给定一个排好序的数组,允许每个数字出线两次。如果多于两次,则删除。

其实这个题与之前只允许出现一次的那个题目很相似,因为数组已经排好序,所以我们可以进行遍历一次,如果出现的次数多于两次,则不保留,进行删除。

其实这个题目有个对index++和++index的考察。

代码如下:

class Solution
{
public:
int removeDuplicates(vector<int>& nums)
{
int n=nums.size();
if(n<=2)
{
return n;
}
int index=2;
for(int i=2;i<n;i++)
{
if(nums[i]!=nums[index-2])
{
nums[index++]=nums[i];
}
}
return index;

}
};

第二种解法:

class Solution {
public:
int removeDuplicates(vector<int>& nums)
{
int n=nums.size();
int index=0;
for(int i=0;i<n;i++)
{
if(i<n-2&&nums[i]==nums[i+1]&&nums[i]==nums[i+2])
{
continue;
}
nums[index++]=nums[i];
}
return index;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: