【Leetcode】26.删除有序数组中的重复项

题目链接:

https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150

题目描述:


解题思路:

使用双指针算法(快慢指针),p1与p2分别指向第一个和第二个元素,p2为快指针,p1为慢指针。

  • nums.size() == 0时,直接return 0; 即可
  • nums.size() !=0时,p1作为慢指针指向第一个元素,p2作为快指针指向第二个元素,res 初始化为1
  • nums[p1] == nums[p2] 时,只需要将p2++即可
  • nums[p1] != nums[p2]时,只需要将p+1位置的元素与p2交换,同时指针p1和p2都移向下一个元素,由于此时优找到了一个新元素,因此res也要加1
  • 当p2指针超过nums.size(),说明数组遍历完成,结束循环

代码实现:

时间复杂度O(n)
空间复杂度O(1)

python 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();

        if (n==0){
            return 0;
        }

        int p1 = 0;
        int p2 = 1;
        int res = 1;

        while(p2<n){
            if(nums[p1] == nums[p2]){
                p2++;
            }
            else{
                p1++;
                nums[p1] = nums[p2];
                p2++;
                res++;
            }
        }

        return res;
    }
};
相关推荐
smj2302_796826521 分钟前
解决leetcode第3948题字典序最大的MEX数组
python·算法·leetcode
阿里云云原生10 分钟前
AI Agent 进入生产深水区:如何破解 Token 成本黑洞与排障难题?
人工智能·阿里云·agent·云监控
TheRouter11 分钟前
AI Agent 的并发调度工程实战:任务队列、并发限制与 Fan-out/Fan-in 模式
人工智能
nuo53420214 分钟前
人工智能生成内容 (AIGC) 期末复习资料
人工智能·aigc
zhangfeng113315 分钟前
DNN Transformer SNN 这几个模型的对比和应用场景 前景
人工智能·transformer·dnn
V搜xhliang024618 分钟前
告别SPSS卡顿:用AI智能体自动跑回归、生存曲线、生成方法学段落
运维·人工智能·数据挖掘·回归·机器人·自动化·飞书
Triv202518 分钟前
边缘计算新选择:Kvaser Edge 搭载容器化 OS,四路隔离 CAN-FD + Wi-Fi 6 + GNSS/IMU 全解析
人工智能·边缘计算·远程管理·socketcan·linux容器·ip67、gnss、imu·can-fd
nix.gnehc18 分钟前
CLI 入门:从终端命令到 AI Agent 调用
人工智能·cli
不负岁月无痕19 分钟前
STL-- C++ stack_queue _priority_queue类 模拟实现
开发语言·c++
大象说19 分钟前
朱雀大模型检测对降AI改写内容的适配性实测与原理拆解
人工智能