算法(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
};
相关推荐
aini_lovee1 分钟前
基于粒子群算法(PSO)优化BP神经网络权值与阈值的实现
神经网络·算法
老鼠只爱大米10 分钟前
LeetCode经典算法面试题 #230:二叉搜索树中第K小的元素(递归法、迭代法、Morris等多种实现方案详细解析)
算法·leetcode·二叉搜索树·二叉树遍历·第k小的元素·morris遍历
星期五不见面12 分钟前
嵌入式学习!(一)C++学习-leetcode(21)-26/1/29
学习·算法·leetcode
有诺千金15 分钟前
VUE3入门很简单(4)---组件通信(props)
前端·javascript·vue.js
2501_9447114316 分钟前
Vue-路由懒加载与组件懒加载
前端·javascript·vue.js
2501_9413220318 分钟前
通信设备零部件识别与检测基于改进YOLOv8-HAFB-2算法实现
算法·yolo
modelmd25 分钟前
【递归算法】汉诺塔
python·算法
2401_8384725132 分钟前
C++中的装饰器模式实战
开发语言·c++·算法
白中白1213839 分钟前
算法题-06
算法
雨季66642 分钟前
Flutter 三端应用实战:OpenHarmony “心流之泉”——在碎片洪流中,为你筑一眼专注的清泉
开发语言·前端·flutter·交互