给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
思路:设置两个索引 i , j i,j i,j, i i i指向无重复数组的最后一个下标,通过 j j j来遍历下一个待判定的值,由于数组是排序的,因此只需要判定nums[j]是否等于nums[i],等于则将nums[j]赋值到 i + 1 i+1 i+1的位置,否则 j j j指向下一个元素。
def removeDuplicates(nums):
i, j = 0, 1
while j < len(nums):
if nums[i] != nums[j]:
i += 1
nums[i] = nums[j]
j += 1
return i + 1
leetcode传送门:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array