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

相关推荐
luj_17688 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
mCell8 小时前
你以为短链接只是 Hash + 301/302?
后端·算法·架构
码少女10 小时前
数据结构——哈希表的基础
数据结构·散列表
KaMeidebaby10 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_176810 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
tmlx3I08111 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
不相心 -w-11 小时前
基础-滑动窗口-(定长 | 不定长)
算法
醉城夜风~11 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
ysa05103011 小时前
【板子】ST表
c++·笔记·算法·板子
CHHH_HHH12 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11