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

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

![image-20230803210215410](D:\BaiduSyncdisk\C++\笔记图片\26. 删除有序数组中的重复项1.png)

题目:

给你一个 升序排列的数组 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;
    }
};
posted @ 2023-08-03 21:31  CodeMagicianT  阅读(9)  评论(0编辑  收藏  举报