当前位置: 首页 > 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)。
http://www.xdnf.cn/news/549271.html

相关文章:

  • 人工智能的“歧视”:“她数据”在算法运行中隐形
  • C46-二维数组与指针的总结
  • VUE3 中的 ResizeObserver 警告彻底解决方案
  • C#:多线程Task使用
  • c++使用protocol buffers
  • JS实现古诗竖排从右至左
  • 谈谈jvm的调优思路
  • c++学习方向选择说明
  • [软件工程]第二章题目汇总
  • MySQL 8.0窗口函数详解
  • 48、c# 中 IList 接⼝与List的区别是什么?
  • Gin--Blog项目-flags文件解析
  • RK3576 Android 14.0 SDK开发指南(第一集)
  • 丝杆升降机在锂电行业的自动化应用有什么?
  • Unity-编辑器扩展
  • 2025年护网行动蓝队防御全解析:构建智能动态防御体系
  • Raft算法学习(1)博士论文大纲
  • Go学习教程(附电子书资料)
  • 桥梁凝冰在线监测装置:科技守护道路安全的新防线
  • Python入门手册:Python简介,什么是Python
  • C++之fmt库介绍和使用(2)
  • GPS模块_亿佰特E108-GN04D_u-center2调试
  • Linux:面试题
  • CAU数据库class3 关系型数据库基础
  • WebSocket心跳机制
  • 85.评论日记
  • 【C++算法】69.栈_验证栈序列
  • C++类与对象--7 特性三:多态
  • # YOLOv5:目标检测的新里程碑
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(25):受身形(3)