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;//慢指针代表了不同元素的个数
    }
};
相关推荐
有时间要学习2 分钟前
面试150——第七周
算法·面试·深度优先
AI科技星12 分钟前
万能学习方法论的理论建构与多领域适配性研究(乖乖数学)
人工智能·学习·算法·机器学习·平面·数据挖掘
Ashore11_24 分钟前
蓝桥杯16届Java研究生组
java·算法·蓝桥杯
6Hzlia28 分钟前
【Hot 100 刷题计划】 LeetCode 76. 最小覆盖子串 | C++ 滑动窗口题解
c++·算法·leetcode
像素猎人31 分钟前
蓝桥杯OJ2049蓝桥勇士【动态规划】【dp[n]不是符合题意的答案,只是以an结尾的子问题的答案】
c++·算法·蓝桥杯·动态规划·区间dp
羊小猪~~32 分钟前
LLM--SFT简介
python·考研·算法·ai·大模型·llm·微调
AnalogElectronic39 分钟前
考研408计算机学科专业基础综合——操作系统复习
考研
AnalogElectronic41 分钟前
考研408计算机学科专业基础综合——计算机网络复习
计算机网络·考研
广州灵眸科技有限公司44 分钟前
瑞芯微(EASY EAI)RV1126B 人脸98关键点算法识别
开发语言·科技·嵌入式硬件·物联网·算法·php
篮子里的玫瑰1 小时前
FreeRTOS:信号量与互斥量在DMA串口发送中的实战剖析
stm32·单片机·嵌入式硬件·算法