力扣删除有序数组中的重复项C++

题目


知识点


思路

此题使用双指针法,O(n)的时间复杂度,拼速度的话,可以剪剪枝。

注意题目中:不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

双指针法,动画如下:


错误

返回的是删除重复元素后,数组的新长度


题解

cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() == 0){
            return 0;
        }
        int slow = 0;
        int fast = 1;
        while(fast < nums.size()){
            if(nums[slow] != nums[fast]){//不等就是出现不重复的元素
                nums[++slow] = nums[fast];//放到新位置
            }
            fast++;
        }
        return slow + 1;
    }
};
相关推荐
劈星斩月6 分钟前
监督学习算法 之 决策树
学习·算法·决策树
学计算机的计算基10 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana215 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
To_OC8 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎9 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC10 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn11 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹11 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术11 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划