摘要:
1. 单向链表 1.1 链表反转 1.2 链表中间节点 "面试题——查找单链表的中间节点" 1.3 链表是否有环及其相关扩展 "判断链表中是否有环 有关单链表中环的问题" 1.4 2. 双向链表 3. 循环链表 阅读全文
摘要:
[TOC] 1. 排列 1.1 std::next_permutation 使用STL的std::next_permutation函数 2. 组合 2.1 STL的next_permutation函数 阅读全文
摘要:
1. 线程与进程的区别;2. 线程的基本概念、线程的基本状态及状态之间的转换;3. 多线程同步和互斥有哪几种实现方法;4. 多线程同步和互斥有何异同?在什么情况下分别使用它们?5. 进程状态及其之间的转换;6. 阅读全文
摘要:
LRU的典型实现是hash map + doubly linked list, 双向链表用于存储数据结点,并且它是按照结点最近被使用的时间来存储的。 如果一个结点被访问了, 我们有理由相信它在接下来的一段时间被访问的概率要大于其它结点。于是, 我们把它放到双向链表的头部。当我们往双向链表里插入一个结点, 我们也有可能很快就会使用到它,同样把它插入到头部。
如果没有哈希表,我们要访问某个结点,就需要顺序地一个个找, 时间复杂度是O(n)。使用哈希表可以让我们在O(1)的时间找到想要访问的结点, 或者返回未找到 阅读全文