山海科技发展网

💪 LeetCode第一题:TWO SUM(C++版)

导读 在编程的世界里,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 twoSum(vector& nums, int target) {

unordered_map 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 {};

}

```

这个解法不仅简洁优雅,还体现了哈希表的强大功能!💪

无论是初学者还是老手,这道题都值得反复练习。掌握它,你就向算法之路上迈出了坚实的一步!🎉