散列表(哈希表)
实现一个基于链表法解决冲突问题的散列表
参考: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): |