26. 删除有序数组中的重复项(双指针法) 零基础快速入门基础算法指南 力扣手把手带刷

复制代码
int removeDuplicates(int* nums, int numsSize) {
    if(numsSize==0) return 0;
    int fast=1,slow=1;
    while(fast<numsSize){
        if(nums[fast]!=nums[fast-1]){
            nums[slow++]=nums[fast];
        }
        fast++;
    }
    return slow;
}

核心思路:双指针法

  1. 指针定义
    • fast快指针 ,遍历原数组,负责寻找不重复的新元素
    • slow慢指针 ,指向新数组(无重复)的下一个待填充位置
  2. 核心逻辑 因为数组是非严格递增 的,重复元素一定相邻 ,所以只需比较 nums[fast]nums[fast-1]
    • 若两者不相等 :说明找到新的不重复元素,将其赋值到 nums[slow],并让 slow 后移。
    • 若两者相等 :说明是重复元素,直接跳过,仅让 fast 后移。
  3. 结果 遍历结束后,slow 的值就是去重后数组的长度 ,且数组前 slow 个元素为去重后的结果。

https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solutions/728105/shan-chu-pai-xu-shu-zu-zhong-de-zhong-fu-tudo

相关推荐
雨落在了我的手上7 分钟前
Java数据结构(十五):哈希表
数据结构
虚无的纽扣8 分钟前
【力扣刷题】第三天:有效三角形的个数、快乐数
算法·排序算法
tiger86511 分钟前
大语言模型面试和题解,Context Engineering 怎么做?长 Prompt、动态上下文与 Memory 管理
人工智能·深度学习·算法·语言模型·自然语言处理·面试·nlp
不会就选b1 小时前
算法日常・每日刷题--<贪心>17
算法
6Hzlia3 小时前
【Classic 150 刷题计划】 LeetCode 205. 同构字符串 | C++ 双向绑定与哈希表映射
c++·算法·leetcode
有点。10 小时前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥11 小时前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸11 小时前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp11 小时前
KV Cache 解析
java·算法
liliangcsdn12 小时前
IVOL与偏度因子的对比测量分析
算法