算法(TS):存在重复元素

给你一个整数数组 nums 。如果存在一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]

输出:true

示例 2:

输入:nums = [1,2,3,4]

输出:false

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]

输出:true

提示:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

解法一

用一个 set 对象用来保存已经从 nums 中遍历得到的数据,遍历 nums 时判断 set 中是否存在它,是则说明 nums 中存在重复的值,这些返回 true,否则继续遍历,直到nums结束,返回 false

typescript 复制代码
function containsDuplicate(nums: number[]): boolean {
    const numSet = new Set<number>()
    let result = false
    for(let num of nums) {
        if (numSet.has(num)) {
            result = true
            break
        } else {
            numSet.add(num)
        }
    }

    return result
};

时间复杂度O(n),空间复杂度O(n)

解法二

先排序,再比较相邻元素是否相等

ini 复制代码
function containsDuplicate(nums: number[]): boolean {
    nums = nums.concat([])
    nums.sort((a,b) => a - b)
    let result = false
    let i = 0

    while(i < nums.length) {
        if (nums[i] === nums[i + 1]) {
            result = true
            break
        }
        i++
    }
    return result
};
相关推荐
程序员清洒1 天前
CANN模型剪枝:从敏感度感知到硬件稀疏加速的全链路压缩实战
算法·机器学习·剪枝
vortex51 天前
几种 dump hash 方式对比分析
算法·哈希算法
爱喝白开水a1 天前
前端AI自动化测试:brower-use调研让大模型帮你做网页交互与测试
前端·人工智能·大模型·prompt·交互·agent·rag
董世昌411 天前
深度解析ES6 Set与Map:相同点、核心差异及实战选型
前端·javascript·es6
Wei&Yan1 天前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code
团子的二进制世界1 天前
G1垃圾收集器是如何工作的?
java·jvm·算法
吃杠碰小鸡1 天前
高中数学-数列-导数证明
前端·数学·算法
故事不长丨1 天前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
long3161 天前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
近津薪荼1 天前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先