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;
}
};
标签:26,删除,nums,int,元素,数组
From: https://www.cnblogs.com/codemagiciant/p/17604539.html