26. 删除有序数组中的重复项
26. 删除有序数组中的重复项

题目:
给你一个 升序排列的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持 一致。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
●更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
●返回 k 。
提示:取要的数
答案1(极客时间):
class Solution 
{
public:
    int removeDuplicates(vector<int>& nums) 
    {
        int n = 0;
        for(int i = 0; i < nums.size(); i++)
        {
            if(i == 0 ||nums[i] != nums[i-1])
            {
                nums[n] = nums[i];
                n++;
            }
        }
        return n;
    }
};
答案2(官方):
class Solution 
{
public:
    int removeDuplicates(vector<int>& nums)
    {
        int n=nums.size();
        if(n==0)
        {
            return 0;
        }
        int fast=1,slow=1;
        while(fast<n)
        {
            if(nums[fast]!=nums[fast-1])
            {
                nums[slow]=nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
};

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号