Given nums = [0,0,1,1,1,2,2,3,3,4],
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn't matter what values are set beyond the returned length.
思路:删除重复数字之后的有效长度
class Solution
{
public:
int slength(vector<int>& nums)
{
int p = 1;
for (int i = 1; i < nums.size(); i++)
{
if (nums[i] == nums[i - 1])
{
nums.erase(nums.begin()+i);
}
}
return nums.size();
}
};
int main()
{
vector<int> nums = { 1,1,2,2,3,4,4,6};
Solution s;
int a = s.slength(nums);
cout << a << endl;
for (int i : nums)
{
cout << i << endl;
}
}
Follow up for ”Remove Duplicates”: What if duplicates are allowed at most twice?
For example, Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3]
思路:重复三次删除一次 返回有效长度
class Solution
{
public:
int slength(vector<int>& nums)
{
int p = 1;
for (int i = 2; i < nums.size(); i++)
{
if (nums[i] == nums[i - 2])
{
nums.erase(nums.begin()+i);
}
}
return nums.size();
}
};
int main()
{
vector<int> nums = { 1,1,2,2,3,4,4,4,6};
Solution s;
int a = s.slength(nums);
cout << a << endl;
for (int i : nums)
{
cout << i << endl;
}
}