😈博客主页:🐼大家好我叫张同学🐼
💖 欢迎点赞 👍 收藏 💗留言 📝 欢迎讨论! 👀
🎵本文由 【大家好我叫张同学】 原创,首发于 CSDN 🌟🌟🌟
✨精品专栏(不定时更新) 【数据结构+算法】 【做题笔记】【C语言编程学习】
☀️ 精品文章推荐
【C语言进阶学习笔记】三、字符串函数详解(1)(爆肝吐血整理,建议收藏!!!)
【C语言基础学习笔记】+【C语言进阶学习笔记】总结篇(坚持才有收获!)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)
| 前言 |
为什么要写
刷题笔记?
写博客的过程也是对自己刷题过程的梳理和总结,是一种耗时但有效的方法。
当自己分享的博客帮助到他人时,又会给自己带来额外的快乐和幸福。
(刷题的快乐+博客的快乐,简直是奖励翻倍,快乐翻倍有木有QAQ🙈)
| 题目内容 |
给你一个 升序排列 的数组
nums,请你原地删除重复出现的元素,使每个元素 只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组
nums的第一部分。更规范地说,如果在删除重复项之后有k个元素,那么nums的前k个元素应该保存最终结果。 将最终结果插入nums的前k个位置后返回k。
不要使用额外的空间,你必须在原地修改输入数组 并在使用O(1)额外空间的条件下完成。
| 解题过程 |
要想保留非重复项,我们可以采取的一种方式,就是每次都遍历一次前面的数组元素:
1)如果不出现重复的,就将其保留到数组当中。
2)如果出现重复的就跳过该元素。这种方式对于有序以及非有序的数组均适用。

时间复杂度为O(N^2),空间复杂度为O(1)
【C语言版】
int removeDuplicates(int* nums, int numsSize){
int cur = 0,prev = 0;
本文介绍了LeetCode第26题的解决方案,针对有序数组,通过双指针法删除重复元素,保持元素有序。文章讨论了C语言和C++的实现,分析了两种语言在内存耗时上的差异,并提供了详细的算法图解。

最低0.47元/天 解锁文章
898

被折叠的 条评论
为什么被折叠?



