Leetcode刷题笔记

第二十八天 Remove Duplicates from Sor

2018-09-16  本文已影响9人  业余马拉松选手

继续刷一道水题,嗯,其实对比之前,已经不是那么水了吧

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的,这个要特别注意下,平时用的少,有时候还容易忽略。

上一篇 下一篇

猜你喜欢

热点阅读