100.删除排序数组中的重复数字

这道题不用想得太多,就是从数组中找出不相同的元素依次放在数组的前部;如果全部不相同相当于每一步都执行nums[++j]=nums[i],如果有重复的该位会被后面不相同的数组元素所覆盖。如果是[1,2,3,3,3]这样的测试案例怎么办,最后的3不可能全部消除掉呀?所以最好加上nums.resize();但是不加的话也能AC,估计是测试案例读取的时候读到尾部第一个元素的时候就默认正确并输出了吧,要不然最后的3应该是消除不掉的;具体原因还希望知道的大神可以评论我一下……

class Solution {
public:
    /*
     * @param nums: An ineger array
     * @return: An integer
     */
    int removeDuplicates(vector<int> &nums) {
        // write your code here
        if(nums.empty()) return 0;
        if(nums.size()==1) return 1;
        int len=nums.size();
        int j=0;
        for(int i=0;i<len;i++)
        {
            if(nums[i]!=nums[j])  nums[++j]=nums[i];
        }
        nums.resize(j+1); //这行最好加上
        return j+1;
    }
};
posted @ 2017-12-13 23:22  MrYun  阅读(108)  评论(0)    收藏  举报