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、边界确定,避免未定义行为

posted @ 2018-09-10 10:10  Kipper  阅读(214)  评论(0)    收藏  举报