两数之和

🔗 两数之和

题目来源:1. 两数之和 – 力扣(LeetCode)


📌 题目描述

给定一个整数数组 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]

⚠️ 提示

  • 2 <= nums.length <= 10⁴
  • -10⁹ <= nums[i] <= 10⁹
  • -10⁹ <= target <= 10⁹
  • 只会存在一个有效答案

💡 解法:哈希表

class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
return new int[0];
}
}

📊 复杂度分析

  • 时间复杂度:O(n) —— 一次遍历
  • 空间复杂度:O(n) —— 哈希表存储最多 n 个元素

🧩 解题思路简述

遍历数组,对每个元素 nums[i],计算其“补数” target - nums[i],检查是否已在哈希表中:

  • 若存在 → 找到答案,返回下标
  • 若不存在 → 将 nums[i] 和其下标存入哈希表

利用哈希表实现 O(1) 查找,将暴力 O(n²) 优化为 O(n)。


文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇