您能用一个循环找出两数之和下标的位置吗?

给定一个整数数组nums 和一个整数目标值target ,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。

但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

请用js代码实现

示例1:

输入: nums = [2,7,11,15], target = 9
输出: [0,1]
解释:因为nums[0]+nums[1]==9,返回[0,1]。

示例2 :

输入: nums = [3,2,4], target = 6
输出: [1,2]

示例3:

输入: nums = [3,3],target = 6
输出: [0,1]

提示:

2 <= nums.length<= 103

-109 <= rums[i] <= 109

-109 <=target <= 109

只会存在一一个有效答案

js 哈希算法实现代码

js 数组的indexOf实现代码

js 哈希算法实现代码:

<!DOCTYPE html>
<html>
<head>
 <title>您能用一个循环找出两数之和下标的位置吗? xinbiancheng.cn</title>
</head>
<body>
 您能用一个循环找出两数之和下标的位置吗?
</body>
<script type="text/javascript">
 function twoSum(nums,target){
  var hash = {}
  hash[nums[0]]=0;
  for(var i=1;i<nums.length;i++){
   var AnotherNumber = target-nums[i];
   if(!(hash[AnotherNumber]==undefined)){
    return [hash[AnotherNumber],i]
   }
   hash[nums[i]] = i;
  }
 }
 var nums=[6,3,8,2,1];
 var target=8;
 console.log(twoSum(nums,target))
//[0, 3]
nums = [2,7,11,15]
target = 9
console.log(twoSum(nums,target))
//[0, 1]
nums = [3,2,4]
target = 6
console.log(twoSum(nums,target))
// 输出: [1,2]
nums = [3,3]
target = 6
console.log(twoSum(nums,target))
// 输出: [0,1]
</script>
</html>

以上的代码通过 console.log 打印出,我们想要的结果

js 数组indexOf实现代码:

<!DOCTYPE html>
<html>
<head>
 <title>您能用一个循环找出两数之和下标的位置吗? xinbiancheng.cn</title>
</head>
<body>
 您能用一个循环找出两数之和下标的位置吗?
</body>
<script type="text/javascript">
 var twoSum = (nums,target)=>{
  for(let i = 0;i < nums.length; i++){
   let test = nums.indexOf(target - nums[i]);
   if(test!=-1&&test!=i){
    return [i,test]
   }
  }
 }

 var nums=[6,3,8,2,1];
 var target=8;
 console.log(twoSum(nums,target))
 //[0, 3]
 nums = [2,7,11,15]
 target = 9
 console.log(twoSum(nums,target))
 //[0, 1]
 nums = [3,2,4]
 target = 6
 console.log(twoSum(nums,target))
 // 输出: [1,2]
 nums = [3,3]
 target = 6
 console.log(twoSum(nums,target))
 // 输出: [0,1]
</script>
</html>