【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;
    }
};
相关推荐
工业机器人销售服务40 分钟前
应对频繁换模挑战:伯朗特机器人快换方案实现冲压产线“分钟级”换产
人工智能
2501_9219608541 分钟前
地图之外:对Lerchner“AI永无意识”论的系统反驳与协同本体论的重建
人工智能·重构
AI医影跨模态组学41 分钟前
Eur Radiol 温州医科大学第五附属医院等团队:开发与解释基于双能量CT的深度学习放射组学模型,用于预测颈动脉支架后新出现的脑缺血病灶
人工智能·深度学习·论文·医学·医学影像·影像组学
Bode_20022 小时前
制造企业实现产品服务化的路径
人工智能
Rubin智造社2 小时前
Claude Code开发者大会系列2|“饮鸩止渴”还是“即刻解药”?Anthropic与SpaceX的联姻内幕
大数据·数据库·人工智能·开发者大会·anthropic·claude code
AI机器学习算法2 小时前
机器学习基础知识
数据结构·人工智能·python·深度学习·算法·机器学习·ai学习路线
Sherlock Ma8 小时前
西瓜书《机器学习》全网最详细解读 第一章:绪论
人工智能·深度学习·考研·机器学习·学习方法·西瓜书·改行学it
烟锁池塘柳08 小时前
【机器学习】一文彻底搞懂正则化(Regularization)
人工智能·深度学习·机器学习
X journey8 小时前
机器学习进阶(13):支持向量机SVM
算法·机器学习·支持向量机
一个天蝎座 白勺 程序猿8 小时前
从AlphaGo到ChatGPT:机器学习基础概念的全景式拆解与工程实践思考
人工智能·机器学习·chatgpt