找回密码
 立即注册
首页 业界区 业界 LeetCode 1:两数之和(Two Sum)

LeetCode 1:两数之和(Two Sum)

南宫玉英 2 小时前
一、题目描述

原题

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例
  1. 示例 1:
  2. 输入:nums = [2,7,11,15], target = 9
  3. 输出:[0,1]
  4. 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]
  5. 示例 2:
  6. 输入:nums = [3,2,4], target = 6
  7. 输出:[1,2]
  8. 示例 3:
  9. 输入:nums = [3,3], target = 6
  10. 输出:[0,1]
复制代码
约束条件

<ul>2  F["哈希表 O(1)"]三、算法解答

算法一:暴力枚举法

1. 算法原理描述

核心思想:穷举所有可能的两数组合,检查它们的和是否等于目标值。
实现方式

  • 使用两层循环
  • 外层循环固定第一个数 nums
  • 内层循环遍历其后的所有数 nums[j](j > i)
  • 检查 nums + nums[j] == target
2. 算法解答过程

以 nums = [2, 7, 11, 15], target = 9 为例:
外层 i内层 jnumsnums[j]和是否等于 target01279✅ 找到!返回 [0, 1]
3. 算法原理图像解析

flowchart TD    subgraph 数组["数组 nums, target = 9"]        A0["[0]=2"] --- A1["[1]=7"] --- A2["[2]=11"] --- A3["[3]=15"]    end        subgraph 流程["暴力枚举流程"]        S[开始] --> L1["外层循环 i = 0"]        L1 --> L2["内层循环 j = 1"]        L2 --> C1{"nums[0] + nums[1]
= 2 + 7 = 9
== target?"}        C1 -->|"✅ 是"| R["返回 [0, 1]"]        C1 -->|"❌ 否"| L3["j++, 继续内层"]        L3 --> L4["若内层结束
i++, 继续外层"]    end        subgraph 复杂度["复杂度分析"]        T["⏱ 时间: O(n²)"]        SP["
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册