当前位置: 首页 > news >正文

[面试精选] 0001. 两数之和

文章目录

      • 1. 题目链接
      • 2. 题目描述
      • 3. 题目示例
      • 4. 解题思路
      • 5. 题解代码
      • 6. 复杂度分析

1. 题目链接


1. 两数之和 - 力扣(LeetCode)


2. 题目描述


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

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

3. 题目示例


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

4. 解题思路


  • **哈希表: **使用哈希表来存储已经遍历过的数字及其索引,在O(1)时间内检查是否存在目标值(tar - x)。
  • 一次遍历:对于每个元素,检查哈希表中是否存在对应的补数(即tar - x),如果存在则立即返回结果。

5. 题解代码


class Solution {public int[] twoSum(int[] nums, int tar) {// 创建一个哈希表来存储数字和对应的索引Map<Integer, Integer> idx = new HashMap<>();// 遍历数组for (int i = 0; ; i++) {int x = nums[i]; // 当前数字// 检查哈希表中是否存在目标值(tar - x)if (idx.containsKey(tar - x)) {// 如果存在,返回这两个数的索引return new int[]{idx.get(tar - x), i};}// 将当前数字及其索引存入哈希表idx.put(x, i);}}
}

6. 复杂度分析


  1. 时间复杂度
    • 遍历数组一次:O(n),其中n是数组的长度。
    • 哈希表的插入和查找操作均为O(1)。
    • 总时间复杂度:O(n)。
  2. 空间复杂度
    • 哈希表存储最多n个数字及其索引:O(n)。
    • 总空间复杂度:O(n)。

相关文章:

  • 【解决】SSH 远程失败之路由配置问题
  • laravel中如何使用Validator::make定义一个变量是 ,必传的,json格式字符串
  • 【git】在Windows上搭建git服务器
  • 使用Java实现Navicat密码的加密与解密
  • Python训练营打卡 Day31
  • 牛客网 NC14736 双拆分数字串 题解
  • 【windows】音视频处理工具-FFmpeg(合并/分离)
  • I2C 协议的理解以及在 OLED 上的应用
  • mac上安装 Rust 开发环境
  • 数据分析_商务运营考核指标体系搭建
  • 【爬虫】12306自动化购票
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取目录大小?
  • os agent智能体软件 - 第三弹 - 纯语音交互
  • 解决npm install报错:getaddrinfo ENOTFOUND registry.nlark.com
  • 如何从不同位置将联系人导入 iPhone(完整指南)
  • 【520 特辑】用 HTML/CSS/JavaScript 打造浪漫炫酷的表白网页
  • 【HTML-3】HTML 中的水平线与换行:基础元素详解
  • 零售EDI:Belk Stores EDI需求分析
  • 使用 ARCore 和 Kotlin 开发 Android 增强现实应用入门指南
  • 安装PostgresSQL
  • 凤阳文旅局回应鼓楼瓦片脱落:鼓楼楼宇系仿古建筑,动工时已履行报批手续
  • 破题“省会担当”,南京如何走好自己的路?
  • 黄仁勋的新逻辑:从“卖铲人”到“全球AI基建运营商”
  • 国际博物馆日|航海博物馆:穿梭于海洋神话与造船工艺间
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 莫高义在第四届中国新闻发言人论坛开幕式上的致辞