【Leetcode刷题笔记之数组篇】26. 删除有序数组中的重复项

本文介绍了LeetCode第26题的解决方案,针对有序数组,通过双指针法删除重复元素,保持元素有序。文章讨论了C语言和C++的实现,分析了两种语言在内存耗时上的差异,并提供了详细的算法图解。
摘要由CSDN通过智能技术生成

😈博客主页:🐼大家好我叫张同学🐼
💖 欢迎点赞 👍 收藏 💗留言 📝 欢迎讨论! 👀
🎵本文由 【大家好我叫张同学】 原创,首发于 CSDN 🌟🌟🌟
精品专栏(不定时更新) 【数据结构+算法】 【做题笔记】【C语言编程学习】
☀️ 精品文章推荐
【C语言进阶学习笔记】三、字符串函数详解(1)(爆肝吐血整理,建议收藏!!!)
【C语言基础学习笔记】+【C语言进阶学习笔记】总结篇(坚持才有收获!)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)


前言

为什么要写刷题笔记
写博客的过程也是对自己刷题过程的梳理总结,是一种耗时有效的方法。
当自己分享的博客帮助到他人时,又会给自己带来额外的快乐和幸福。
(刷题的快乐+博客的快乐,简直是奖励翻倍,快乐翻倍有木有QAQ🙈)

题目内容

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有k个元素,那么nums的前 k个元素应该保存最终结果。 将最终结果插入nums的前 k个位置后返回 k
不要使用额外的空间,你必须在 原地修改输入数组 并在使用O(1) 额外空间的条件下完成。

在这里插入图片描述
原题链接(点击跳转)

解题过程

要想保留非重复项,我们可以采取的一种方式,就是每次都遍历一次前面的数组元素
1)如果不出现重复的,就将其保留到数组当中。
2)如果出现重复的就跳过该元素。这种方式对于有序以及非有序的数组均适用。

image-20220322153139593
时间复杂度为O(N^2),空间复杂度为O(1)

【C语言版】

int removeDuplicates(int* nums, int numsSize){
   
    int cur = 0,prev = 0;
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大家好我叫张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值