https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
# -*- coding:utf-8 -*- class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ for i in range(len(nums) - 1, 0, -1): if nums[i] == nums[i - 1]: nums.pop(i) return len(nums) if __name__ == '__main__': nums = [1, 1, 2] print(Solution().removeDuplicates(nums))
思路:因为要返回nums的引用,所以只能在原变量上进行操作,因此不可以使用set去重,我们循环检查是否与上一位相同,然后pop掉当前元素。
这里使用倒序的原因是如果是正序删掉元素之后会漏查并且会溢出(又因为python的for循环中对i的更改不会实际上改变循环中的i,具体原因我也不是很清楚,查了一大圈,也只是大概知道for循环是一个有着单独线程锁的容器,对i的更改不会造成实际i的改变,如果有知道更详细原因的大佬还希望指教)但是倒序就不一样了,倒序无非是多比较一次,不会造成上溢的问题。
0 条评论