记录错误代码,也不算错。。超时了
class Solution {
public:
int removeDuplicates(vector<int>& nums)
{
if(!nums.empty())
{
int l = nums.size();
int left = 0;
int right = 1;
for(int i = 0; i < l-1; i++)
{
if(nums[left]==nums[right])
{
for(int b=right;b<l-1;b++)
{
int temp = nums[b];
nums[b]=nums[b+1];
nums[b+1]=temp;
}
}
else if(nums[left]!=nums[right])
{
left++;
right++;
}
}
return right;//这里当时写在括号里面了 导致只能输出1个数 找了好久的问题
}
return 0;
}
};
上正确答案:
核心思想是 数组非严格递增,会有重复元素,但是重复元素下标都是连续的,重点是每次连续的第一个数赋值就可以了。
class Solution {
public:
int removeDuplicates(vector<int>& nums)
{
if(!nums.empty())
{
int l = nums.size();
int left = 1;
for(int right = 1; right < l; right++)
{
if(nums[right]!=nums[right-1])//保证每一次连续重复的元素只有第一个赋值给left
{
nums[left]=nums[right];
left++;
}
}
return left;
}
return 0;
}