- 删除有序数组中的重复项
用两个“指针”index和i,index遍历数组,当nums[index]和nums[i]相等时,i直接往后找;直到它们相等时,将当前nums[i]的值赋给nums[++index]
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.empty())
{
return 0;
}
int index = 0;//保留数组个数
for (int i = 0;i < nums.size();i++)//遍历数组
{
if(nums[index] != nums[i])//不同数字
nums[++index] = nums[i];//通过赋值将i位置的值赋值给index
}
return index + 1;//当前数组元素的个数
}
};
- 删除有序数组中的重复项 II
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()<=2)
{
return nums.size();
}
int index = 0;//保留数组个数
for (int i = 2;i < nums.size();i++)//遍历数组
{
if(nums[index] != nums[i])//不同数字
{
nums[index + 2] = nums[i];//通过赋值将i位置的值赋值给index
index++;
}
}
return index + 2;//当前数组元素的个数
}
};