链表|JZ46 孩子们的游戏(圆圈中最后剩下的数)
JZ46 孩子们的游戏(圆圈中最后剩下的数
- 题目描述
- 思路分析
- 代码实现
题目描述 点这里
思路分析 【链表|JZ46 孩子们的游戏(圆圈中最后剩下的数)】约瑟夫问题。
数组链表模拟/递推递归,都能做。
暴力模拟的方法就不讲了,当成链表节点就好。主要写下递归递推做法。递推/递归的关键是找到递推关系。
设 f ( n , m ) f(n,m) f(n,m)为问题规模为 n , m n,m n,m时问题的答案。
则画图重新标号+映射分析可得递推式 f ( n , m ) = ( f ( n ? 1 , m ) + m )m o dn f(n,m)=(f(n-1,m)+m)\ mod\ n f(n,m)=(f(n?1,m)+m) mod n
代码实现
class Solution {public:
int LastRemaining_Solution(int n, int m) {if(!n) return -1;
if(n==1) return 0;
return (LastRemaining_Solution(n-1,m)+m)%n;
}
};
推荐阅读
- leetcode|leetcode 92. 反转链表 II
- 用力地活着
- 我眼里的孩子们
- 贫困户孟晓春和她的孩子们|我的视界我的中国
- LeetCode|LeetCode 876. 链表的中间结点
- redis|redis 链表
- C语言数据结构之二叉链表创建二叉树
- 教学相长|教学相长 ———— 与孩子们一同成长
- 可爱的孩子们
- 班主任工作日记403