一、题目描述
原题
给定一个整数数组 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]
复制代码 约束条件
<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["
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |