LeetCode探索之旅(8)

今天继续刷LeetCode,第26题,去掉有序表中重复的元素,不能花费额外的内存。

分析:
既然是有序表,那么就可以将第一个最为对比元素,遍历后面所有的元素,如果不相等就将该元素赋值给参考元素后一位,并令该元素为新的参考元素,相等就继续向后遍历。另外注意,最后输出的是不相等的个数,所以需要统计不相等的情况有几次。

问题:
1、容器的使用和数组的使用类似,用nums[i]可以查找到任意一个元素;
2、分析清楚题目的意思,明白输出的含义;

附上代码:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.empty())
            return 0;
        int n=nums.size();
        if(n==1)
            return 1;
        int j=0;
        int sum=1;
        for(int i=1;i<n;i++)
        {
            if(nums[j]!=nums[i])
            {
                nums[j+1]=nums[i];
                sum++;
                j++;
            }      
        }
        return sum;
        
    }
};

猜你喜欢

转载自blog.csdn.net/JerryZengZ/article/details/87693495
今日推荐