给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 用js写
时间: 2024-08-13 11:06:48 浏览: 58
两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个
在JavaScript中,你可以使用哈希表(也叫字典或对象)来解决这个问题,这被称为“两数之和”问题。这里是一个简单的解决方案:
```javascript
function twoSum(nums, target) {
// 创建一个空对象作为哈希表
const hash = {};
// 遍历数组
for (let i = 0; i < nums.length; i++) {
// 如果目标值减去当前元素的值已经在哈希表中
if (hash[target - nums[i]]) {
// 返回找到的两个数的下标,注意哈希表中的键是数值,所以加一得到对应数组的索引
return [hash[target - nums[i]] + 1, i + 1];
}
// 如果当前元素不在哈希表中,将它添加进去并设置值为它的索引
hash[nums[i]] = i;
}
// 如果没有找到满足条件的组合,返回null或undefined
return null; // 或者 throw new Error('No solution found.');
}
```
这个函数首先尝试查找目标值与数组中已知元素的差,如果找到这样的差,则说明已经找到了一对数,因为差值的另一个数在之前的位置。如果没有找到,就将当前元素及其索引存入哈希表继续搜索。
阅读全文