Skip to content

1. 两数之和【LeetCode 刷题日记】

记录自己从零开始刷 LeetCode,提高自己的数据结构与算法能力,为了获得更好的工作机会

#数组 #简单

题目:1. 两数之和
地址:https://leetcode.cn/problems/two-sum/

解题情况

  • 读题后,自行解答出
  • 第一次运行,提示报错,测试用例只通过了一个,修改代码后,测试用例全部通过

我的解答

  • 解法:暴力解法,两次 for 循环
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)
javascript
let twoSum = function (nums, target) {
  for (let i = 0; i < nums.length; i++) {
    for (let j = 0; j < nums.length; j++) {
      if (nums[i] + nums[j] === target && i !== j) {
        return [i, j];
      }
    }
  }
};

参考优秀题解

  • 解法:哈希表
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)
javascript
let twoSum = function (nums, target) {
  let map = new Map();
  for (let i = 0; i < nums.length; i++) {
    let diff = target - nums[i];
    if (map.has(diff)) {
      return [map.get(diff), i];
    } else {
      map.set(nums[i], i);
    }
  }
  return [];
};

复盘

  • 自己数据结构与算法能力比较差,是我一直以来的痛点,这个地方我也是知道的,但是可能工作中用的比较少,所以经常性的不重视和逃避
  • 第一反应能想到的就是暴力解法,双重 for 循环,其他解法想不到的原因,是自己接触的比较少,后续继续踏实练习
  • 看了人家用哈希表的解法,真的觉得牛,很有趣的解法和思路,是自己以前没想过的解法,学到了
  • 以前写技术博客,担心自己写的文章不太好,不太敢写,但是我觉得这样是不好的,起码要先开始写再追求优秀,完成好过完美,开始做吧

版权所有 © 2024 created by itchao