Algorithms_基础数据结构(04)_线性表之链表_单向循环链表&约瑟夫环问题

简介: Algorithms_基础数据结构(04)_线性表之链表_单向循环链表&约瑟夫环问题

20191216220326136.png


大纲图


20191229231819317.png

链表的经典面试题目

如何设计一个LRU缓存淘汰算法

tip:单向链表


约瑟夫问题


N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。

举个例子: 假设N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。

现在问你最后留下的人是谁?

比如N=6,M=5 ,留下的就是1

1 2 3 4 5 6 => 6 1 2 3 4 => 6 1 2 3 =>1 2 3 => 1 3 => 1


tips: 单向循环链表


结构


20200108141801697.png


相比单向链表(单向链表的tail节点next指针指向null) , 单向循环链表无非就是把尾结点的next指针重新指向head节点而已。


代码实现也相对简单,多一步操作, 思路可参考 Algorithms_基础数据结构(02)_线性表之链表_单向链表 ,这里我们直接使用单向循环链表来解决个经典的算法问题吧。


分析


20200108195715989.png


20200108195736496.png


相关文章
|
10月前
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
375 30
|
10月前
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
457 25
|
11月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
517 5
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
131 0
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
155 2
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
215 1
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
109 1
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表

热门文章

最新文章