审题:
需要我们原地删除数组中的重复数据,并输出有效数据个数
思路:
方法一:原地解法(双指针)
设置left指针指向当前的非重复数据,right负责遍历数组,遇到和left指向的数据不同的数据就将值赋值给left+1的位置。
方法二:非原地解法(建数组)
我们建一个数组a,,第一个nums的数据直接插入,后面的数据若与a不同则可以插入到下一个有效位置
解题:
方法一:原地解法(双指针)
注意:
1.特殊处理:当数组是空的时候我们需要直接返回0,因为我们下面的代码无法兼容这个情况
2.让right初始化为1:因为第一个nums的数据一定是不重复的,所以遍历从索引为1开始
3.返回left+1:因为left表示的是有效数据的最大索引,而索引是从0开始的,所以数据个数要在此基础加1
方法二:非原地解法(建数组)
1.用cur来记录当前的非重复数据
2.k表示有效数据个数
26. 删除有序数组中的重复项 - 力扣(LeetCode)