美文网首页
消除重复项

消除重复项

作者: 绘梨衣_34f3 | 来源:发表于2018-11-28 11:18 被阅读0次

题目:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

在排序好的数组中删除重复项,这里我写两个方法,一个是自己的暴力破解,一个是官方解。两个算法时间复杂度都为O(n),但是官方解的效率要比我自己的高很多

  • 暴力解
class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l = len(nums)
        if l == 0:
            return l
        t = 0
        for i in range(0,(l - 1)):
            if t >= (l - 1):
                break
            if nums[t] == nums[t + 1]:
                del nums[t]
                l -= 1
                t -= 1
            t += 1
        return len(nums)
        

这里我是对数组进行遍历,相同元素从数组删除,由于判断太多可能对时间影响较大,所以时间较长

  • 官方解
class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0:
            return 0
        i = 0
        for j in range(1,len(nums)):
            if nums[i] != nums[j]:
                i += 1
                nums[i] = nums[j]
        return i + 1

官方解用了两个指针,j指针对数组进行遍历,如果不相同则插入到i的下一个位置,这样前i个位置就为数组中消除重复项的值了

相关文章

  • 消除重复项

    题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额...

  • 【MYSQL】统计分组中不重复的字段数量

    从结果集中消除重复记录 使用DISTINCT关键字即可从结果集中消除重复记录。 查询结果

  • Excel删去重复项-让数据更简洁

    删去重复项-让数据更简洁 什么是删去重复项? 怎么删去重复项? 注意 什么是删去重复项? 删去重复项就是去除数据中...

  • 如何优雅消除重复代码

    如何优雅消除重复代码 在消除重复代码之前,我们首先要考虑重复代码的特性是什么。有的同学会说,重复代码不就是一模一样...

  • 消除重复数字

    [华为编程题]消除重复数字 时间限制:3s 空间限制:32768K 题目描述:给定一个正整数,给出消除重复数字以后...

  • 消除重复元素

    问题描述 小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到...

  • 消除贴图重复感

    搬砖----解决贴图重复 参考自巨佬iq的文章,文章用两种方法消除了贴图重复问题。本文在unity里实现了第一种。...

  • list消除重复数据

    面试官:有一个list,有很多重复数据,现在你手写一段代码,重复的数据只留一份。 我:(仔细想了几分钟)双重循环l...

  • 筛选文件中的第28列的重复项所含有的文本内容:

    先找出重复项重复的次数 再根据重复的次数删选内容 最后根据第28列的重复项匹配文本内容

  • 如何快速求和

    重建另一个表格→选定区域:A栏或B栏→数据→删除重复项→高亮重复项(检测重复项)→=SUM选SUMIFS(另建的表...

网友评论

      本文标题:消除重复项

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