😈博客主页:🐼大家好我叫张同学🐼
💖 欢迎点赞 👍 收藏 💗留言 📝 欢迎讨论! 👀
🎵本文由 【大家好我叫张同学】 原创,首发于 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;