26.从排序数组中删除重复项
思路:检查前后两个元素,如果后元素与前元素重复则删除该元素。否则,将前元素指向前元素
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) {//容器不能为空,避免未定义行为
return 0;
}
for (int it=0; it!=nums.size()-1;) {//后元素相等时,考虑删除后元素,前元素最大值为size-1
if (*(nums.begin()+it)==*(nums.begin()+it+1)) {
nums.erase((nums.begin()+it+1));//删除重复与元素
}
else{
it=it+1;//移动前元素
}
}
return nums.size();
}
};
讨论区:[https://leetcode.com/problems/remove-duplicates-from-sorted-array/discuss/]
反思:1、边界确定,避免未定义行为

浙公网安备 33010602011771号