zoukankan      html  css  js  c++  java
  • leetcode.1. 两数之和

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

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

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    

     相关标签:数组 哈希表

    解题思路

    • 用 hashMap 存一下遍历过的元素和对应的索引。
    • 每访问一个元素,查看一下 hashMap 中是否存在满足要求的目标数字。
    const twoSum = (nums, target) => {
      // 存放出现过的数字,和对应的索引
      const prevNums = {};                         
      // 遍历元素
      for (let i = 0; i < nums.length; i++) {      
        // 当前元素
        const curNum = nums[i];                    
        // 满足题目要求的目标元素
        const targetNum = target - curNum;         
        // 在prevNums中找目标元素的索引
        const targetNumIndex = prevNums[targetNum];
        // 如果存在,直接返回 [目标元素的索引, 当前索引]
        if (targetNumIndex !== undefined) {        
          return [targetNumIndex, i];             
        }                                     
        // 如果不存在,说明之前没出现过目标元素
        // 每次都存入当前元素和对应的索引
        prevNums[curNum] = i;                      
      }
    }
    
    作者:xiao_ben_zhu
    链接:https://leetcode-cn.com/problems/two-sum/solution/qing-xi-de-bian-liang-ming-ming-bang-zhu-ji-yi-bu-/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

  • 相关阅读:
    Redis分布式锁的实现原理
    Redis锁的简单应用
    Redis所需内存 超过可用内存怎么办
    redis学习笔记之虚拟内存
    组织安全性SQL
    应收发票相关脚本
    用户与职责与请求关系语句
    应收事物处理删除 SQL 语句
    总账库存科目明细追溯
    月结各模块关闭情况查询
  • 原文地址:https://www.cnblogs.com/yingyigongzi/p/13606646.html
Copyright © 2011-2022 走看看