美文网首页
本周一道算法题(六十一)

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

作者: CrazySteven | 来源:发表于2018-07-29 23:30 被阅读37次

    本周题目难度级别'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 原创出品,欢迎转载,转载时请注明出处!

    相关文章

      网友评论

          本文标题:本周一道算法题(六十一)

          本文链接:https://www.haomeiwen.com/subject/rdtxvftx.html