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

相关推荐
寻寻觅觅☆9 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
偷吃的耗子9 小时前
【CNN算法理解】:三、AlexNet 训练模块(附代码)
深度学习·算法·cnn
2013编程爱好者10 小时前
【C++】树的基础
数据结构·二叉树··二叉树的遍历
NEXT0610 小时前
二叉搜索树(BST)
前端·数据结构·面试
化学在逃硬闯CS10 小时前
Leetcode1382. 将二叉搜索树变平衡
数据结构·算法
ceclar12310 小时前
C++使用format
开发语言·c++·算法
Gofarlic_OMS10 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
夏鹏今天学习了吗11 小时前
【LeetCode热题100(100/100)】数据流的中位数
算法·leetcode·职场和发展
忙什么果11 小时前
上位机、下位机、FPGA、算法放在哪层合适?
算法·fpga开发
董董灿是个攻城狮11 小时前
AI 视觉连载4:YUV 的图像表示
算法