算法(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
};
相关推荐
Kaltistss18 分钟前
98.验证二叉搜索树
算法·leetcode·职场和发展
杨进军20 分钟前
React 创建根节点 createRoot
前端·react.js·前端框架
知己如祭22 分钟前
图论基础(DFS、BFS、拓扑排序)
算法
mit6.82431 分钟前
[Cyclone] 哈希算法 | SIMD优化哈希计算 | 大数运算 (Int类)
算法·哈希算法
c++bug34 分钟前
动态规划VS记忆化搜索(2)
算法·动态规划
ModyQyW35 分钟前
用 AI 驱动 wot-design-uni 开发小程序
前端·uni-app
哪 吒36 分钟前
2025B卷 - 华为OD机试七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷
说码解字41 分钟前
Kotlin lazy 委托的底层实现原理
前端
军训猫猫头1 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
爱分享的程序员1 小时前
前端面试专栏-算法篇:18. 查找算法(二分查找、哈希查找)
前端·javascript·node.js