给定一个有序数组,你须要原地删除其中的重复内容,使每一个元素只出现一次,并返回新的长度。
不要另外定义一个数组,您必须经过用 O(1) 额外内存原地修改输入的数组来作到这一点。
示例:数组
给定数组: nums = [1,1,2], 你的函数应该返回新长度 2, 而且原数组nums的前两个元素必须是1和2 不须要理会新的数组长度后面的元素
重复的须要去掉,无非就是遍历数组,发现重复,就把后面的往前移,把重复值覆盖掉。具体说,能够维护2个指针,慢指针开始指向数组第一个元素,快指针指向第二个元素,而后快指针不断判断本身当前元素和前一个元素是否相同,相同则快指针后移,不相同则将当前值赋值给慢指针的后一个元素,慢指针后移。最后慢指针指向的元素及前面全部元素都是不重复的。具体过程参考以下代码和注释:函数
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) <= 1: return len(nums) s = 0 for f in range(1, len(nums)): if nums[s] != nums[f]: s += 1 nums[s] = nums[f] return s + 1