导读 在编程的世界里,LeetCode的第一题《Two Sum》是每个程序员入门算法时的必经之路!这个问题简单却充满挑战:给定一个整数列表和一个目标值...
在编程的世界里,LeetCode的第一题《Two Sum》是每个程序员入门算法时的必经之路!这个问题简单却充满挑战:给定一个整数列表和一个目标值,在列表中找到两个数字,使它们的和等于目标值,并返回这两个数字的索引。 🎯
假设你拿到了一个整数数组 `nums` 和一个目标值 `target`,比如 `nums = [2, 7, 11, 15]`,`target = 9`。通过简单的分析可以发现,`2 + 7 = 9`,所以答案是 `[0, 1]`。✨
那么问题来了,如何高效地解决这个问题呢?这里推荐使用哈希表(unordered_map)来优化时间复杂度。我们可以遍历数组,同时记录已经访问过的数字及其索引。当当前数字与某个已存数字的和等于目标值时,直接返回结果即可!这种方法的时间复杂度为 O(n),空间复杂度也是 O(n)。🌟
下面是一个 C++ 示例代码片段:
```cpp
include
include
using namespace std;
vector
unordered_map
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (map.find(complement) != map.end()) {
return {map[complement], i};
}
map[nums[i]] = i;
}
return {};
}
```
这个解法不仅简洁优雅,还体现了哈希表的强大功能!💪
无论是初学者还是老手,这道题都值得反复练习。掌握它,你就向算法之路上迈出了坚实的一步!🎉
版权声明:本文由用户上传,如有侵权请联系删除!