本周一道算法题(六十一)

2018-07-29  本文已影响37人  CrazySteven

本周题目难度级别'Medium',使用语言'Python'

题目:给你一个数组,你要进行数组去重,最多重复一次,然后将新的数组长度返回(注:只能在原数组上操作,不能创建新的数组)eg:给你[0,0,1,1,1,1,2,3,3],你要返回7,并将数组前七个元素改为[0, 0, 1, 1, 2, 3, 3]。

思路:题目就是思路了,遍历去重么,关键是怎么实现,直接看代码吧:

class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        for i in nums:
            # 当数组的这个元素个数超过2就删掉一个
            while nums.count(i) > 2:
                del nums[nums.index(i)]
        return len(nums)

这个效率太低,换个姿势,小伙伴写的效率高,就不注释了:

class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = 0
        for i in nums:
            if n < 2 or i > nums[n-2]:
                nums[n] = i
                n += 1
        return n

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

上一篇下一篇

猜你喜欢

热点阅读