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

题目链接:

26. 删除有序数组中的重复项 - 力扣(LeetCode)

思路分析:同样是双指针问题,和之前的27题很像(LeetCode27.移除元素-CSDN博客,大家可以参考这个),这道题目的升级之处在于我们需要妥善处理好重复出现的元素的关系,所以引入了快慢指针,快指针负责全局遍历,慢指针来删除不需要的元素。

算法分析:在思路里面已经讲了一部分,就是设置快慢指针,然后快指针负责全局移动(要遍历一遍数组),慢指针负责进行处理,每当移动到快指针发现相邻两个元素不相等时,就需要慢指针进行特判。

参考代码:

cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n=nums.size();//数组的长度
        if(n==1)//进行一个特判 方便后面用快慢指针
            return 1;
        int slow=1,fast=1;//快慢指针开始都初始化为1
        while(fast<n){//快指针没有遍历完
            if(nums[fast]!=nums[fast-1]){//如果相邻两个元素不相等
                nums[slow]=nums[fast];//把变换的元素的值赋值给慢指针
                slow++;//慢指针向后移动
            }
            ++fast;//快指针每一轮都要移动
        }
        return slow;//慢指针代表了不同元素的个数
    }
};
相关推荐
Fuliy961 分钟前
第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)
人工智能·笔记·python·学习·算法
kisshuan123962 分钟前
[特殊字符] RollingDepth:单目视频深度估计算法解析
算法·音视频
gihigo19983 分钟前
SSA奇异谱分解:时频域信号成分分析与重构
数据结构·算法·重构
Takoony7 分钟前
OpenClaw 深度拆解:下一代自主智能体架构全面解析
人工智能·深度学习·算法·机器学习·架构·openclaw
Sunhen_Qiletian9 分钟前
OpenCV中透视与仿射变换的区别——从矩阵到实战的全面解析
opencv·算法·矩阵
zz34572981139 分钟前
C语言基础之蓝桥杯
c语言·算法·蓝桥杯
程序员阿鹏11 分钟前
73.矩阵置零
数据结构·算法·矩阵
Eloudy14 分钟前
CHI 开发备忘 12 记 -- CHI spec 12 链路层
人工智能·算法·arch·hpc
老师好,我是刘同学16 分钟前
贪心算法与优先队列实战解析
算法·ios·贪心算法
智者知已应修善业19 分钟前
【51单片机8位密码锁】2023-2-22
c语言·经验分享·笔记·单片机·嵌入式硬件·算法·51单片机