题解 | #和为S的两个数字#

和为S的两个数字

https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b

function FindNumbersWithSum(array, sum) {
    // 方法一:双循环暴力解法,运行超时
    //     for(let i = 0; i < array.length; i++){
    //         for(let j = i + 1; j < array.length; j++){
    //             if(array[i] + array[j] === sum){
    //                 return [array[i], array[j]];
    //             }
    //         }
    //     }
    //     return [];
    // 方法二:哈希表
    // 对于数组中每个数a,用sum减去a剩余b,如果b在数组中已经出现过了,则a,b就是我们要找的
    // 哈希表的键为数组值,键值为其下标
    const map = new Map();
    let temp = 0;
    for (let i = 0; i < array.length; i++) {
        // 计算减去当前元素后需要的元素的值temp
        temp = sum - array[i];
        // 判断当前map中是否有需要的元素值temp
        // 如果有直接返回当前元素和需要的元素值temp
        if (map.has(temp)) {
            return [array[map.get(temp)], array[i]];
        }
        // 将当前元素加入到map中
        map.set(array[i], i);
    }
    return [];
}
module.exports = {
    FindNumbersWithSum: FindNumbersWithSum,
};

全部评论

相关推荐

King987:模板换一个,这个有些丑,在校生的话建议丰富一下在校经历,各种比赛之类的,项目的话你名字是一点儿不包装呀,还有项目描述,像是直接从课程里抄出来的,这里建议自己再改改,说白了就是自己包装一下,改不好可以聊我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务