每日一题——LeetCode1346.检查整数及其两倍数是否存在

方法一 循环查找

用indexOf查找每个元素的两倍是否存在在数组中,找到了就直接return true,循环结束还没找到就return false

javascript 复制代码
var checkIfExist = function(arr) {
    for(let i=0;i<arr.length;i++){
        let index =arr.indexOf(arr[i]*2)
        if(index>=0 && index!=i){
            return true
        }   
    }
    return false
};

消耗时间和内存情况:

方法二 哈希表

javascript 复制代码
var checkIfExist = function(arr) {
    let map = new Map()
    arr.map((item,i)=>{
        map.set(item,i)
    })

   for(let i=0;i<arr.length;i++){
       if(map.has(arr[i]*2)&& map.get(arr[i]*2)!=i){
           return true
       }
   }
    return false
};

消耗时间和内存情况:

方法三 set交集

用set保存arr里每个元素的两倍,arr里有大于等于两个0就一定return true,小于等于1个0则看arr和set有没有重复元素且这个元素不能为0

javascript 复制代码
var checkIfExist = function(arr) {
    let set = new Set()
    for(num of arr){
        if(num==0 && set.has(num))  return true
        set.add(num*2)
    }
    for(num of arr){
        if(num!=0 && set.has(num))  return true
    }
    return false
};

消耗时间和内存情况:

相关推荐
byzh_rc1 分钟前
[算法设计与分析-从入门到入土] 贪心算法
算法·动态规划
咖啡の猫5 分钟前
TypeScript-webpack
javascript·webpack·typescript
Felven7 分钟前
C. Contrast Value
c语言·开发语言·算法
natide9 分钟前
表示/嵌入差异-1-欧几里得距离(Euclidean Distance)-L2 距离(L2 distance)-欧式距离的标准化
人工智能·pytorch·python·深度学习·算法·自然语言处理
雪花desu10 分钟前
【Hot100-Java简单】:两数之和 (Two Sum) —— 从暴力枚举到哈希表的思维跃迁
java·数据结构·算法·leetcode·哈希表
qzhqbb11 分钟前
群智能计算核心算法全解析
人工智能·算法
leaves falling12 分钟前
c语言打印闰年
java·c语言·算法
YGGP12 分钟前
【Golang】LeetCode 121. 买卖股票的最佳时机
算法·leetcode
小脑虎14 分钟前
JavaScript 进阶核心文档(零基础衔接版,通俗易懂 2025最新)
javascript
旅行的狮子20 分钟前
5分钟快速体验Midscene.js(Node环境、Playwright)
开发语言·javascript·midscenejs