Day11 - 383. 赎金信


class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: ransom_cnt = [0] * 26 magazine_cnt = [0] * 26

Day11 - 454.四数相加II


题目链接:https://leetcode.cn/problems/4sum-ii/description/ 核心思想:哈希法-dict (字典) 解析: 定义一个空字典 hashmap = dict() 遍历前两个列表,相加后 统计hashmap[a+b] 的出现次数,a+b用来与后 两个列表遍历

Day10 - 202. 快乐数


题目链接:https://leetcode.cn/problems/happy-number/description/ 方法:哈希法-set() 解题思路: 拆解并拿到每个数字的平方, 平方后相加得到的数字 再次进行拆解 把每次相加得到的数字进行判断,如果如果出现过,就直接返回 False 证明不是

Day10 - 1. 两数之和


题目链接:https://leetcode.cn/problems/two-sum/description/ 核心思想:哈希法-dic 字典(map) 利用 dict 键值对属性, key存放对应元素,value存放对应元素的索引 在 dict 中寻找 target - value 对应元素是否存在

Day9. 349.两个数组的交集


题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/description/ 核心思想:哈希法-set集合-dict字典 用dict字典去统计数组1的每个数字出现的次数 最终答案用set存储,保证唯一性 遍历数组2,如果数组2的某

Day9. 242. 有效的字母异位词


题目链接:https://leetcode.cn/problems/valid-anagram/description/ 核心思想:哈希法-数组 利用数组,统计第一个字符串每个字符的出现次数,再统计第二个字符串每个字符的出现次数,相减,最后数组全部为0即是有效的字母异位词 # # @lc app=l

Day8. 哈希表理论基础

哈希表用来快速判断一个元素是否出现在集合里 例如查询一个名字是否出现在这个学校里,要枚举的话时间复杂度是O(n),如果使用哈希表就是O(1) 初始化学校所有学生名字都在哈希表里面,通过索引就能判断是否存在 将学生姓名映射到哈希表上就是哈希函数 哈希函数 通过hashCode把名

Day7 . 面试题 02.07. 链表相交

题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/description/ 核心思想:双指针 链表A:1 → 2 → 3 → 8 → 4 → 5 链表B:6 → 7 → 8 → 4 → 5 (相交节点是值为

Day7 . 142.环形链表II


题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/description/ 核心思想:快慢指针 绕圈 定义快指针走2步,慢指针走1步,快慢指针相遇 # # @lc app=leetcode.cn id=142 lang=python3 #

Day6 . 19. 删除链表的倒数第 N 个结点

题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/ 核心思路:双指针+虚拟头节点 定义slow 和 fast指针 ,分别初始化为虚拟头节点 fast指针先走 N+1步,再同时移动slow指针,