给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例
输入:nums = [1, 1, 2, 2, 3, 3]
输出:2
补充:nums = [1, 2, 3, 2, 3, 3],取值 nums[:2+1]
解析
1)解题的关键还是在审题,注意数组是升序,且要求不能使用额外空间,原地修改
2)双指针问题,慢指针只有在出现新的元素的时候,才往前移动,且把快指针对应的元素赋值给慢指针
代码示例
def removeDuplicates(nums):
i = 0
for num in nums:
if nums[i] != num:
i += 1
nums[i] = num
# print(nums[:i+1])
return i+1
nums = [1,1,2,3,3]
print(removeDuplicates(nums))
执行用时:32 ms , 在所有 Python3 提交中击败了 98.16% 的用户.
本文为 陈华 原创,欢迎转载,但请注明出处:http://www.chenhuax.com/read/351