题解 | #两数之和#

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f?tpId=295&tqId=745&ru=/exam/interview&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Finterview

思路

首先创建了一个 Map,然后遍历数组 numbers

对于每个数字,计算其与目标值的差值 complement

如果 complement 已经在 Map 中存在,说明找到了两个满足条件的数,返回它们的下标。

如果没有找到,将当前数字存储在 Map 中,以便后续查找。

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param numbers int整型一维数组 
 * @param target int整型 
 * @return int整型一维数组
 */
function twoSum( numbers ,  target ) {
    // write code here
    let numbersMap = new Map(); // 创建一个map,键-值对的集合
    for (let i=0; i<numbers.length; i++) {
        let complement = target - numbers[i]; // 查看当前这个数的减数是否已经在map中,
        if (numbersMap.has(complement)) {
            // 找到符合条件的两个数,返回下标(从1开始计算)
            return [numbersMap.get(complement) + 1, i+1];
        }
        // 当前这个数numbers[i]的减数不在map中,将当前这个数存入map中,键为数,值为数组下标
        numbersMap.set(numbers[i], i);
    }
    return -1; // 找不到符合条件的两个数 ,就返回-1
    
}
module.exports = {
    twoSum : twoSum
};

map:

在 JavaScript 中,Map 是一种用于存储键-值对的数据结构。它的特点包括:

键可以是任意数据类型,包括原始类型(如字符串、数字、布尔值)以及对象、函数等复杂类型。Map 中的键是唯一的,每个键只能在 Map 中出现一次,这意味着每个键对应一个唯一的值。Map 会保留插入顺序,这意味着你可以按照插入的顺序迭代 Map 中的键-值对。下面是一些常见的 Map 方法和操作:

// 创建 Map:
const myMap = new Map();
// 向 Map 中添加键-值对:
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
// 从 Map 中获取值:
const value = myMap.get('key1'); // 获取键 'key1' 对应的值检查键是否存在:
const keyExists = myMap.has('key1'); // 检查键 'key1' 是否存在于 Map 中
// 从 Map 中删除键-值对:
myMap.delete('key1'); // 删除键 'key1' 对应的键-值对
// 清空 Map:
myMap.clear(); // 清空 Map 中的所有键-值对
// 获取 Map 的大小(键-值对数量):
const size = myMap.size; // 获取 Map 的大小
// 迭代 Map:
myMap.forEach((value, key) => {
  console.log(Key: ${key}, Value: ${value});
});
for (const [key, value] of myMap.entries()) {
  console.log(Key: ${key}, Value: ${value});
}

Map 是一个非常有用的数据结构,特别适用于需要存储一组键-值对,并保持键的唯一性和插入顺序的情况。它可以用于各种场景,例如缓存、数据处理和数据关联等。

全部评论

相关推荐

Volatiled:对方撤回了啥呀?
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务