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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的童年,广阔得无边无际。它有绿豆味的冰棍,有酸甜适中的猪皮冻,也有耳朵会被吃掉的传说和天黑照镜子时潜伏的鬼。 许...
    朵小嘎阅读 1,144评论 0 0
  • 没有人会直接给你荣华富贵,只有送你机会和平台,现在这个时代什么都不缺,缺的只有像鹰一样的眼光,像狼一样的精神,像熊...
    拥抱梦想1阅读 1,794评论 0 1
  • 生活中我们经常会做一些很枯燥但又不得不做的事情,那么有办法将这种不得不做转化为我愿意做呢?作者讲到刺激个人动力的是...
    小太阳and小煤球阅读 1,937评论 0 0
  • 调用系统封装好的播放界面 播放一段文本 AVAduioSession 应用程序与音频会话交互的接口 权限判断 相机...
    MartinCQ阅读 3,582评论 0 0