返回

乐享 LeetCode 刷题记录:双剑合璧,两数之和

闲谈

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 有任何疑问或建议,欢迎在评论区留言。下期再见!