面向腾子的leetcode刷题临阵磨枪说是NO.146 LRU缓存https://leetcode.cn/problems/lru-cache/solutions/259678/lruhuan-cun-ji-zhi-by-leetcode-solution/题目提到键值对,想到构建hash表,涉及到出入顺序,想到栈、队列和链表,由于要实现顺序更新,使用双向链表hash表键自设,值为指向链表元素的引用 双向链表键与hash表键一致,值为实际存储值class DLinkedNode: def __init__(self, key=0, value=0): self.key = key self.value = value self.prev = None self.next = None class LRUCache: def __init__(self, capacity: int): self.cache = dict() # 使用伪头部和伪尾部节点
面试小抄马上面了,光速打点小抄背背数据结构与算法排序快速排序确定基准值:随机一点x调整区间:使得x左边的数<=x x右边的数>=x递归def quick_sort(nums): # 定义递归的终止条件:如果列表为空或只包含一个元素,直接返回 if len(nums) <= 1: return nums # 选择基准值(可以选择任何元素,这里选择中间元素) pivot = nums[len(nums) // 2] # 初始化左右子数组 left = [x for x in nums if x < pivot] # 小于基准值的元素放入左子数组 middle = [x for x in nums if x == pivot] # 等于基准值的元素放入中间子数组 right = [x for x in nums if x > pivot] # 大于基准值的元素放入右子数组 # 递归调用快速排序,并拼接左子数组、中间子数组和右子数
punkginger
本质酒鬼