剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫问题:数学方法;模拟法)

2021年02月09日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 约瑟夫问题2. 题解2.1 计算索引法(超时)2.2 数学解法参考文献1. 约瑟夫问题剑指 Offer 62. 圆圈中最后剩下的数字本题就是著名的约瑟夫问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。2. 题解2.1 计算索引法(超时)这种方法就是用数组模拟整个过程,核心思路是计算下一个待删除数的索引: idx = (idx
摘要由CSDN通过智能技术生成

2021年02月09日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】



1. 约瑟夫问题

剑指 Offer 62. 圆圈中最后剩下的数字
在这里插入图片描述
本题就是著名的约瑟夫问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。

2. 题解

2.1 模拟法(超时)

这种方法就是用数组模拟整个过程,核心思路是直接计算下一个待删除数的索引: idx = (idx + m - 1)%n;

时间复杂度很高,为 O(mn),leetcode会超时。

class Solution {
   
public:
    int lastRemaining(int n, int m) {
   
        vector<int> vec
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值