2 条题解
-
0
题目:两数之和
思路分析:题目要求在整数数组中找到两个数,使其和等于目标值并返回它们的索引。暴力解法通过双重循环枚举所有可能的数对,时间复杂度为O(n²),效率较低。优化方案采用哈希表存储已遍历元素及其索引,每次遍历计算目标值与当前元素的差值,若差值存在于哈希表中则直接返回结果,否则将当前元素存入哈希表。此方法时间复杂度O(n),空间复杂度O(n)。
代码实现:
#include <iostream> #include <vector> #include <unordered_map> using namespace std; vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> numMap; for (int i = 0; i < nums.size(); ++i) { int complement = target - nums[i]; if (numMap.find(complement) != numMap.end()) { return {numMap[complement], i}; } numMap[nums[i]] = i; }
- 1
信息
- ID
- 6498
- 时间
- 3000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者