散列表(哈希表)
实现一个基于链表法解决冲突问题的散列表
参考:https://www.cnblogs.com/linxiyue/p/3795396.html
1 | class _ListNode(object): |
实现一个 LRU 缓存淘汰算法
LRU全称是Least Recently Used,即最近最久未使用的意思。
LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。
使用dict和list实现
比较自然的想法:使用dict存<key,value>
,使用list记录访问顺序,索引[0,…,capacity-1]
,越小表示访问时间越近,每次pop()
删除最末尾的元素。
1 | # coding: utf-8 |
对应的 LeetCode 练习题
哈希表
并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!)
leetcode-1-两数之和
代码见:leetcode-1-两数之和 中”方法二”,使用dict记录当前元素下标和匹配的值
LeetCode-202-快乐数Happy Number
使用dict记录求过的数
1 | class Solution(object): |
字符串
实现一个字符集,只包含 a~z 这 26 个英文字母的 Trie 树
Trie树又叫做前缀树(Prefix Tree)
将每个节点的children都是一个dict,根据dict中的key找下一个节点
1 | # coding:utf-8 |
实现朴素的字符串匹配算法
字符串匹配:字符串”abcde”中是否含有字符串”bd”
朴素算法:暴力解,下面给出了2种方式
1 | # coding:utf-8 |
对应的 LeetCode 练习题
Reverse String (反转字符串)
英文版:https://leetcode.com/problems/reverse-string/
中文版:https://leetcode-cn.com/problems/reverse-string/
代码见:leetcode-344-反转字符串
Reverse Words in a String(翻转字符串里的单词)
英文版:https://leetcode.com/problems/reverse-words-in-a-string/
中文版:https://leetcode-cn.com/problems/reverse-words-in-a-string/
代码如下:
1 | class Solution(object): |
String to Integer (atoi)(字符串转换整数 (atoi))
英文版:https://leetcode.com/problems/string-to-integer-atoi/
中文版:https://leetcode-cn.com/problems/string-to-integer-atoi/
代码见:leetcode-8-字符串转换整数(atoi)