美文网首页
查找重复数

查找重复数

作者: 极客匠 | 来源:发表于2019-11-18 00:12 被阅读0次

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]
输出: true
示例 2:

输入: [1,2,3,4]
输出: false
示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

解题思路

  1. 暴力查找,在这里我们采用了线性查找算法(最简单对查找算法),来检查特定值是否存在列表中。做法就是逐个检查列表中的元素,直到找到满足条件的元素。

    即:循环表里全部nums数组,对第i 个整数nums[i],对前i-1个整数查找nums[i]对重复值,如果找到,则返回True,否则继续。直到程序最后,返回False

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        for i in range(len(nums)):
            i1 = nums[i]
            for j in range(1+i, len(nums)):
                j1 = nums[j]
                if(i1 == j1):
                    return True
        return False

​ 复杂度分析:时间复杂度:O(n2),最坏的情况检查n(n+1)/2对整数

​ 空间复杂度: O(1),只使用了常数空间

  1. 排序

    如果存在重复元素,排序后它们应该相邻

    class Solution:
        def containsDuplicate(self, nums: List[int]) -> bool:
            lens = len(nums)
            if(lens == 0 or lens == 1):
                return False
            nums.sort()
            for i in range(len(nums) -1):
                if(nums[i] == nums[i+1]):
                    return True
            return False
    

    复杂度分析:排序的复杂度是 O(nlogn),扫描的复杂度是O(n)。整个算法主要由排序过程决定,因此是O(nlogn)。

    ​ 空间复杂度: O(1),只使用了常数空间

  2. 哈希表

    利用支持快速搜索和插入操作的动态数据结构。

    使用搜索时间更快的数据结构将加快整个算法的速度。

    若nums[i]不在hash中,则令nums[i]为key,1为value,若已存在,则返回True,遍历数组到最后,则返回False

    class Solution:
        def containsDuplicate(self, nums: List[int]) -> bool:
            hash_v = {}
            for i in range(len(nums)):
                if(nums[i] not in hash_v):
                    hash_v[nums[i]] = 1
                else: 
                    return True
            return False
    

复杂度分析:时间复杂度:O(n),只进行了一次遍历

​ 空间复杂度: O(n),使用了hash存储过程

相关文章

  • 查找重复数

    给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都...

  • mongo数据库查重

    查找该集合中是否有重复数据,并选择是否进行删除操作 当然还可以使用聚合函数根据指定字段进行去重

  • BinarySearch

    前提 必须是有序数组。 思路 无重复数组二分查找 有重复数组二分查找 思路 1.退出条件leftIndx>righ...

  • mongodb查找重复数据 allowDiskUse属性

    mongodb查找重复数据过大时需要添加 allowDiskUse属性

  • 8.pandas 剔除重复

    生成数据 去重操作 重复数据

  • 2020-04-09-(03)

    查找重复数据 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。 Solution1 Solut...

  • Oracle数据库中重复数据删除方法:部分去重+完全去重

    Oracle数据库重复的数据一般有两种去重方法,一、完全重复数据去重;二、部分字段数据重复去重。 一、完全重复数据...

  • 数组中的重复数字

    替换位置,查找到a[i] == i 情况时返回结果 不修改数组,查找重复数字。类二分法

  • 4. 数据处理

    数据清洗 数据清洗就是将重复的数据筛选清除、将缺失的数据补充完善、将错误的数据纠正或删除 处理重复数据 查找重复数...

  • sql 刷题笔记1

    1. 查找重复的邮箱 这道题本质上是一道查找重复数据的题目,常用的思路就是 使用 group by 分组计数,然后...

网友评论

      本文标题:查找重复数

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