题解 | #两数之和#

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param numbers int整型一维数组
 * @param target int整型
 * @return int整型一维数组
 */
function twoSum(numbers, target) {
    // write code here
	// 建议先看看map对象的常用api
	//创 建Map ---let map = new Map();
	// 给map对象添加内容 --- map.set(key, value); 
	// 根据key从map对象中获取值 --- map.get(key);
	// 判断map对象中是否有某个key,返回Boolean --- map.has(key)
	// 删除 --- map.delete(key)
	// 遍历map对象 for (let [key, value] of map) {  console.log(`${key}: ${value}`);   }
	// 单独遍历键值对  for (let key/value of map.keys/map.value)
	{console.log(`${key}: ${value}`);   }
	// 清除所有元素 clear
	
	//下面是题解: 
    let map = new Map();//用哈希表进行数据存储
    let res = []; // 先忽略,后面用,定一个数组来承接最后的返回结果
    for(let i = 0;i < numbers.length;i++){ // 初始遍历数组
        const stem = target - numbers[i]; //定一个常量,时目标值和遍历数的差值,就是要寻找的那个数字
        if(map.has(stem)) { // 判断当前map对象中是都有差值对应的键,返回一个布尔值
		 // 有的话,代表我们找到了那个差值,把他的下标装到res结果数组中,记得要➕1
            res.push(map.get(stem) + 1)
            res.push(i + 1)     
        } else {
		// 如果没有找到,那就把当前遍历的数字作为key存入map对象中
            map.set(numbers[i],i)
        }
    }
    return res;
}
module.exports = {
    twoSum: twoSum,
};

#我的求职思考#
全部评论

相关推荐

老板加个卤鸡蛋:HR看了以为来卧底来了
点赞 评论 收藏
分享
牛客52811839...:实习要写出来业务和产出,你这写的像流水账没人看。项目经历也没有,换个极简简历试试
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务