乐享 LeetCode 刷题记录:双剑合璧,两数之和
2023-09-21 16:27:26
LeetCode 刷题记录:两数之和
欢迎来到我的 LeetCode 刷题记录!今天,我们将共同探究「两数之和」这一经典题目,这是一个最基本的算法问题之一,也是 LeetCode 面试官的宠儿。做好准备,让我们一起踏上算法之旅吧!
题目概述
给你一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为 target
的那两个整数,并返回他们的数组下标。你只能使用每个元素一次。
举个例子,如果给你一个数组 [2, 7, 11, 15]
和目标值 9
,你应该返回 [0, 1]
,因为 nums[0]
+ nums[1]
等于 9
。
是不是很简单?不过,别被它的表面所迷惑。算法的世界里,最简单的题目往往蕴藏着最深奥的智慧。
算法的奥妙
「两数之和」问题的关键在于找到一种有效的方法来遍历数组,并快速找到满足条件的两个整数。而这正是算法的魅力所在——用最精简的步骤解决最复杂的问题。
LeetCode 官方给出的解法只需要遍历一次数组即可找到结果。这种解法巧妙地利用了哈希表的特性,在遍历过程中将元素及其索引存储到哈希表中。当遇到一个新的元素时,只需检查哈希表中是否存在其目标元素即可。
代码实现
为了帮助你更好地理解算法,我将使用 JavaScript 来演示「两数之和」问题的代码实现:
function twoSum(nums, target) {
const hashTable = {};
for (let i = 0; i < nums.length; i++) {
const complement = target - nums[i];
if (complement in hashTable) {
return [hashTable[complement], i];
}
hashTable[nums[i]] = i;
}
return [];
}
这段代码的运行效率非常高,时间复杂度为 O(n)
,空间复杂度为 O(n)
。它遍历数组一次,同时将元素及其索引存储到哈希表中。当遇到一个新的元素时,只需检查哈希表中是否存在其目标元素即可。如果存在,则返回这两个元素的索引;否则,将该元素及其索引添加到哈希表中。
结语
「两数之和」只是一个开始,LeetCode 的世界里还有更多精彩的题目等待着你去探索。我将继续分享我的 LeetCode 刷题记录,与你一起解锁算法的奥秘,共同进步。
如果你对 LeetCode 有任何疑问或建议,欢迎在评论区留言。下期再见!