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

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9

    所以返回 [0, 1]

    思路:

    1. 用一个 map 变量存储 (nums[i],i)
    2. 遍历 nums 每个值然后通过 target 求其差值,看起差值是否在 map 中,并且不是自身
    3. 如果有,则直接返回两数下标
    4. 如果没有,则直接将nums[i] 添加到 map中
      1. function twoSum(nums,target){
      2. //新map
      3. let map = new Map();
      4. //遍历nums
      5. for(let i = 0;i<nums.length;i++){
      6. //计算差值
      7. let del = target - nums[i];
      8. //如果差值有且不是自身
      9. if(map.has(del)&&map.get(del)!==i){
      10. //返回差值的index和自身index
      11. return [map.get(del),i];
      12. }
      13. //如果差值不在,添加到map中
      14. map.set(nums[i],i);
      15. }
      16. }