继续刷一道水题,嗯,其实对比之前,已经不是那么水了吧
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/
如果没有任何限制,这道题就特别简单了,只要开另外一个空间存一下就好了,但这次是要求原地,那么就需要更好的利用排序这个特性,然后就是开双指针【快慢指针】咯
i是慢指针,j是快指针,只有nums[i] != nums[j]
的时候,i才会往前走一步,这时还需要把nums[j]的值赋给nums[i] ,最终i走了多少步加上1,就是最终需要返回的答案咯
class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return 0
i = 0
for j in range(1,len(nums)):
if nums[i] != nums[j]:
i+=1
nums[i] = nums[j]
return i+1
有个特别需要注意的就是python里的循环,如果使用range的函数的话,比如range(1,3),是不包括3的,这个要特别注意下,平时用的少,有时候还容易忽略。
网友评论