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

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

暴力双循环

  1. var twoSum = function (nums, target) {
  2. for (let i = 0; i < nums.length; i++) {
  3. for (let j = i; j < nums.length; j++) {
  4. if(nums[i]+nums[j]===target){
  5. return [i,j]
  6. }
  7. }
  8. }
  9. };

哈希映射

  1. const twoSum = (nums, target) => {
  2. const prevNums = {};
  3. for (let i = 0; i < nums.length; i++) {
  4. const curNum = nums[i];
  5. const targetNum = target - curNum;
  6. const targetNumIndex = prevNums[targetNum];
  7. if (targetNumIndex !== undefined) {
  8. return [targetNumIndex, i];
  9. }
  10. prevNums[curNum] = i;
  11. }
  12. }