首页 > 编程语言 >LeetCode 题解 | 1. 两数之和 Javascript 版

LeetCode 题解 | 1. 两数之和 Javascript 版

时间:2022-10-29 21:37:19浏览次数:99  
标签:index const target nums 题解 Javascript map let 两数

题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。

示例 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]

方案一

function solutionOne(nums, target) {
  let res = null;
  let loopNum = 0;
  for (let index = 0; index < nums.length - 1; index++) {
    const current = nums[index];
    for (let nextIndex = index + 1; nextIndex < nums.length; nextIndex++) {
      const next = nums[nextIndex];
      loopNum += 1;
      if (current + next === target) {
        res = [index, nextIndex];
        break;
      }
    }
    if (res) {
      break;
    }
  }
  console.log("结果:", res);
  console.log("循环次数", loopNum);
}
solutionOne([2, 7, 11, 15], 9);  // [0, 1] 循环次数 1
solutionOne([3, 2, 4], 6);       // [1, 2] 循环次数 3
solutionOne([3, 3], 6);          // [0, 1] 循环次数 1

方案二

function solutionTwo(nums, target) {
  let res = null;
  for (let index = 0; index < nums.length; index++) {
    const diff = target - nums[index];
    const offset = index + 1;
    let nextIndex = nums.indexOf(diff, offset);
    if (nextIndex > -1) {
      res = [index, nextIndex];
      break;
    }
  }
  console.log("结果:", res);
}

solutionTwo([2, 7, 11, 15], 9);   // [0, 1]
solutionTwo([3, 2, 4], 6);        // [1, 2]
solutionTwo([3, 3], 6);           // [0, 1]

方案三

function solutionThree(nums, target) {
  const map = new Map();
  for (let index = 0; index < nums.length; index++) {
    map.set(nums[index], index);
  }
  for (let index = 0; index < nums.length; index++) {
    const complement = target - nums[index];
    if (map.has(complement) && map.get(complement) !== index) {
      console.log("结果", [index, map.get(complement)]);
      break;
    }
  }
}
solutionThree([2, 7, 11, 15], 9);
solutionThree([3, 2, 4], 6);
solutionThree([3, 3], 6);

方案四

function solutionFour(nums, target) {
  const map = new Map();
  for (let index = 0; index < nums.length; index++) {
    const item = nums[index];
    const complement = target - item;
    if (map.has(complement) && map.get(complement) !== index) {
      console.log("结果", [map.get(complement), index]);
      break;
    }
    map.set(item, index);
  }
}
solutionFour([2, 7, 11, 15], 9);
solutionFour([3, 2, 4], 6);
solutionFour([3, 3], 6);

原题链接

本文由一文多发运营工具平台 EaseWriting 发布

标签:index,const,target,nums,题解,Javascript,map,let,两数
From: https://www.cnblogs.com/wangshaojiea/p/16650988.html

相关文章

  • LeetCode 题解 | 3. 无重复字符的最长子串 Javascript
    /***@param{string}str*@returnsnumber*思路:1.start与range组合成一个窗口,窗口内的子串就是当前最长不重复的字符串*2.range每次循环递增*......
  • LeetCode 题解|6. Z 字形变换
    /***@param{string}s*@param{number}numRows*@return{string}*/varconvert=function(s,numRows){//存储结果constrows=[];//指针下一......
  • LeetCode 题解|9. 回文数
    /***@param{number}x*@return{boolean}*/varisPalindrome=function(x){if(x<0){returnfalse;}letnum=x;letreverse=0;wh......
  • LeetCode 题解|7. 整数反转
    /***@param{number}x*@return{number}*/varreverse=function(x){letres=0;while(x!=0){res=res*10+(x%10);//划重点......
  • CSP-S2022游记&几句话题解
    T1对于每一个点\(u\),计算点权最大的三个点,满足\(dis(u,v)\lek+1,dis(1,v)\lek+1\)。然后枚举\(B,C\),\(3^2\)枚举即可。复杂度\(O(n^2)\)。考场代码#inclu......
  • python(牛客)试题解析1 - 入门级
    导航:一、NC103反转字符串二、NC141判断是否为回文字符串三、NC151最大公约数四、NC65斐波那契数列----------分-割-线-----------一、NC10......
  • javascript advanced interview questions All In One
    javascriptadvancedinterviewquestionsAllInOnejavascript高级面试题AllInOnehttps://github.com/lydiahallie/javascript-questionsrefs©xgqfrms2......
  • JavaScript中window.onload和document.onload有什么区别?
    JavaScript中window.onload和document.onload有什么区别?document.onload在加载图像和其他外部内容之前将其触发。文件。在window.onload之前触发onload事件。window......
  • JavaScript 获取和设置剪贴板中的内容
    通过JavaScript在浏览器中获取或设置剪贴板中的内容,常用于一键复制或使用网页油猴复制限制文本使用execCommand(已弃用)写入文本到剪贴板document.onclick=func......
  • JavaScriptDOM操作的性能优化
    浏览器的重排和重绘是比较消耗性能的操作,所以网页性能优化的手段就是减少重排和重绘的操作。比如:多次更改样式的操作合并为一次操作我们在JavaScript中修改样式,比如:constch......