当前位置: 首页 > article >正文

【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)

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;
    }
};

http://www.kler.cn/a/419806.html

相关文章:

  • 039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)
  • 数据仓库的概念
  • Debian 的更新原理
  • Stable Diffusion 3详解
  • 【设计模式系列】备忘录模式(十九)
  • 基于PyTorch框架的线性回归实现指南
  • Centos7安装MySQL8.0详细教程(压缩包安装方式)
  • mac终端自定义命令打开vscode
  • kube-proxy的iptables工作模式分析
  • 如何使用Python进行下载对应的视频地址
  • Python学习第十五天--魔术方法
  • Kong API Gateway 深度解析与实战指南
  • 【Linux内核】ashmem pin/unpin
  • Python毕业设计选题:基于django+vue的校园影院售票系统
  • CasaOS个人云存储系统使用Gopeed打造你的私人云端下载中心
  • Spring Boot自定义启动banner
  • 基于深度学习的甲状腺结节影像自动化诊断系统(PyQt5界面+数据集+训练代码)
  • 在 Ubuntu 使用 fonts-noto-cjk 设置 Matplotlib 支持中文的完整教程
  • Makefile 入门指南:构建自动化编译流程
  • java 反射 详解
  • Ubuntu 20.04 下 ROS 工作空间的详解与应用
  • rustdesk远程桌面使用
  • Milvus Cloud 2.5:易用性飞跃,助力用户高效管理向量数据库
  • 一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
  • 【k8s深入学习之 event 记录】初步了解 k8s event 记录机制
  • 【ROS2】Ubuntu22.04安装ROS humble