【刷题DAY06】242, 349, 202, 1.md

24. 两两交换链表中的节点

题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/

0x1 看到题目的第一想法

0x2 自己实现过程中遇到哪些困难

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 使用三指针
  • 创建一个虚拟节点,pre, cur, post三指针进行两两交换

0x5 今日收获,记录一下自己的学习时长

  • 链表技巧
    • 使用pre, cur, post三指针进行两两交换
  • 1h

349. 两个数组的交集

题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/

0x1 看到题目的第一想法

  • 数组元素大小为0到1000,设置一个大小为10001的数组作为哈希表进行统计

0x2 自己实现过程中遇到哪些困难

  • No

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 用字典做哈希表,一个数组元素作为一个键,并将键值赋为1

0x5 今日收获,记录一下自己的学习时长

  • 字典做哈希表
  • 30min

202. 快乐数

题目链接https://leetcode.cn/problems/happy-number/

0x1 看到题目的第一想法

  • 没读懂题 不知道怎么跳出循环,如果无限循环的话

0x2 自己实现过程中遇到哪些困难

  • 求每个位置上的数字的平方和
  • python中set用法
    1
    2
    3
    record = set()
    record.add(balabala)
    if i in record
  • python中函数的用法

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 使用set记录出现过的平方和
    • 重复出现就不是快乐数

0x5 今日收获,记录一下自己的学习时长

  • 该用set的时候,还是得用set
    • 不需要对数据进行排序,而且还不要让数据重复
  • 45min

1. 两数之和

题目链接:https://leetcode.cn/problems/two-sum/

0x1 看到题目的第一想法

  • 暴力
  • 没想到哈希表的做法

0x2 自己实现过程中遇到哪些困难

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 用字典
    • 存放我们访问过的元素
    • key: nums中的元素
    • value: nums中的元素的下标!!
  • 我们给出一个数,需要判断这个数(key)是否出现过,如果出现过返回这个数的下标(value)
  • 我们给出的数是 (target - 现在走到的这个数)

0x5 今日收获,记录一下自己的学习时长

  • 为什么会想到用哈希表

    • 查询一个元素是否出现过,或者一个元素是否在集合里
  • 哈希表为什么用map

    • set面放的元素只能是一个key
    • 这里需要记录遍历过的元素及其下标
  • 本题map是用来存什么的
    • 访问过的元素及其下标
  • map中的key和value用来存什么的

    • key: 访问过的元素
    • value: 对应下标
  • 1h

待重点复习

202 1

总结

  • 什么时候使用哈希法?
    • 当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
    • 数组 []
      • 题目中一般告诉已知大小范围的数(而且不太大),可以直接创建一个大小为这个范围大小的数组。使用索引直接访问
    • set()
      • key
    • 字典 {}
      • key and value