• DeepSeek
  • 开发笔记
  • 算法题
  • 前端相关

  • 两数之和
  • 两数相加
  • 无重复字符的最长子串
  • 最长回文子串
  • 盛水最多的容器
  • 三数之和
  • 电话号码的字母组合
  • 有效括号
  • 合并两个有序链表
  • 括号生成
  • 下一个排列
  • 搜索旋转排序数组
  • 在排序数组中查找元素的第一个和最后一个位置
  • 删除链表的倒数第n个节点
  • 组合总和
  • 全排列
  • 旋转图像
  • 字母异位词分组
  • 最大子数组合
  • 跳跃游戏
  • 反转链表
  • 反转链表2
  • 合并区间
  • 最小路径和
  • 编辑距离
  • 颜色分类
  • 组合
  • 子集
  • 不同的二叉搜索树
  • 验证二叉搜索树
  • 对称二叉树
  • 二叉树的层序遍历
  • 二叉树的最大深度
  • 从前序与中序遍历序列构造二叉树
  • 只出现一次的数字
  • 二叉树展开为链表
  • 最长连续序列
  • 单词拆分
  • 环形链表
  • 环形链表2
  • 排序链表
  • 相交链表
  • 乘积最大子数组
  • 最小栈
  • 多数元素
  • 打家劫舍
  • 数组中重复的数据
  • 二叉树的中序遍历
  • 卖股票的最佳时机
  • 数组中的第K个最大元素

两数之和

简单
No.1 两数之和

题目描述:

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

思路:

  • 1、循环数组,同时利用 Map 结构存储已经遍历过的元素。
  • 2、每遍历一个元素,在 Map 里面找是否存在符合题目要求的数字。
  • 3、所有元素遍历完还没有找到目标元素,则返回。

代码

const nums = [1,2,34,4,2,2,3,4]
const target = 8

const twoSum = (nums, target) => {
        let resMap = new Map();
        for (let i = 0; i < nums.length; i++) {
          let key = target - nums[i];
          if (resMap.get(key) === undefined) {
            resMap.set(nums[i], i);
        } else {
            return [resMap.get(key), i];
          }
        }
      };