算法题(18):删除有序数组中的重复项2

审题:

需要原地删除数据让数组中一个数据只能出现最多2次,并返回修改后的数组的数据个数

(不会有空数组情况)

思路:

双指针:我们用left指向下一个需要插入数据的位置,right去遍历数组

left数据的个数小于2时,我们就可以插入数据到left中,若数据与前一个相同则cou++,不同则让cur等于一。

left数据的个数大于等于二则直接访问下一个数据,直到遇到不同的数据

解题:

(1)left为什么从1开始,cou为什么从1开始?

其一,第一个数据是可以直接插入的,所以直接从索引为1的位置开始插入数据,而因我们已经有一个数据默认插入了,所以cur就是初始化为1

其二,若不让left初始化为1,那么在left为0时无法访问left-1位置,会越界

(2)left表示的是待插入数据的位置,所以判断新数据需要和left-1的位置数据去判断

80. 删除有序数组中的重复项 II - 力扣(LeetCode)

相关推荐
云里雾里!11 小时前
力扣 209. 长度最小的子数组:滑动窗口解法完整解析
数据结构·算法·leetcode
憨憨崽&12 小时前
进击大厂:程序员必须修炼的算法“内功”与思维体系
开发语言·数据结构·算法·链表·贪心算法·线性回归·动态规划
chem411113 小时前
C 语言 函数指针和函数指针数组
c语言·数据结构·算法
liu****13 小时前
八.函数递归
c语言·开发语言·数据结构·c++·算法
客梦13 小时前
数据结构-树结构
数据结构·笔记
老约家的可汗14 小时前
数据结构之栈和队列
数据结构
XH华14 小时前
数据结构第六章:栈的学习
数据结构
adam_life15 小时前
【P8306 【模板】字典树】
数据结构·算法·字典树·trie·哈希表··结构体
晨非辰16 小时前
算法闯关日记 Episode :解锁链表「环形」迷局与「相交」奥秘
数据结构·c++·人工智能·后端·python·深度学习·神经网络
信号处理学渣16 小时前
matlab之将一个升序数组按照元素值连续与否分成多组
数据结构·算法·matlab