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;//慢指针代表了不同元素的个数
    }
};
相关推荐
鱼很腾apoc4 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
小许同学记录成长5 小时前
三维重建技术文档
算法·无人机
小O的算法实验室7 小时前
2026年ASOC,基于多目标优化去噪双存档进化算法+路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
2601_954526757 小时前
逆向解析Temu底层动销算法:基于API高并发轮询与全域存量透视的自动化架构重构
算法·架构·自动化
Σίσυφος19008 小时前
数据标准化(拟合的时候使用非常重要)
人工智能·算法
knight_9___8 小时前
大模型project面试7
人工智能·python·算法·面试·大模型·agent
NashSKY9 小时前
EM 算法完整推导与本质剖析
算法·机器学习·概率论
foundbug9999 小时前
MATLAB实现:基于图像对比度和波段相关性的高光谱波段选择算法
开发语言·算法·matlab
嘿嘿嘿x39 小时前
Linux-实践
linux·运维·算法