Fork me on GitHub

LeetCode 第26题--数组中重复元素

 

1. 题目

2.题目分析与思路

3.代码

 

1. 题目

给定数组 nums = [1,1,2],

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

你不需要考虑数组中超出新长度后面的元素。

2. 思路

  这道题总的来说非常神奇,也就是说我们不用删除数组,其实我们最好不要做的事情就是对正在遍历的数组进行或删除,如果说是空间复杂度需要有限制,那么我们应该要做的是复制和调换位置。。。 所以我在这里想删除数组就掉到坑里了。那么我们就要用双指针,我们已经确定了这个是排序后的数组了,那么只要把后面大的数字调换位置就好了。

3. 代码

   

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        j = 0
        for i in range(1,len(nums)):
            if nums[i] == nums[j]:
                continue
            else:
                j += 1
                nums[j] = nums[i]
        return j+1

 

posted @ 2019-10-06 21:27  顾鹏pen  阅读(130)  评论(0编辑  收藏  举报