版权声明:欢迎去我的新家https://www.jianshu.com/u/906a78709f1d https://blog.csdn.net/dongyanwen6036/article/details/85276560
26. 删除排序数组中的重复项
class Solution {
public:
//剑指offer面试3不一样,这题用的双指针Ori,New
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
if (len <= 0)return 0;
int New = 0,Ori = 0;
for (New, Ori; New < len&&Ori < len;)
{
int temp = nums[Ori];
while (Ori < len&& temp == nums[Ori] )// 跳过重复的数
Ori++;
nums[New] = temp; New++;
}
nums.erase(nums.begin()+New,nums.end());//删除最后的New到最后的数据
len = nums.size();
return len;
}
};
27. 移除元素
class Solution {
public:
//再用双指针
int removeElement(vector<int>& nums, int val) {
int len = nums.size();
if (len <= 0)return 0;
int New = 0, Ori = 0;
for (New, Ori; New < len&&Ori < len;)
{
while (Ori< len&&nums[Ori] == val)Ori++;
if (Ori < len)//防止上面最后一个元素相等
{
nums[New] = nums[Ori];
New++;
Ori++;
}
}
nums.erase(nums.begin() + New, nums.end());
return nums.size();
}
};
80. 删除排序数组中的重复项 II
要求:给定一个排序数组,你需要在本体删除重复出现的元素,使得每个元素最多出现两次
,返回移除后数组的新长度。