public class Solution {
// 左神解法,本题本质还是报数为m-1的倍数的人死。求最后一个活着的人是初始时候的哪个人
       /* 报数(A) 实际人员编号(B)
        0 0
  . .
  . .
  n-1 n-1
  n 0
  则可知B = A % n
  同时,当杀了一个人之后,杀人前记为before,杀人后记为after.
  before               after
  k (k < n)            (没有了,因为被杀后变为n-1个人了)
  k+1 0
  .          .
  .          .
  n-2        n-k-3
  0          n-k-2
  .          .
  .          .
  k-1        n-2
    符合公式before = (after + k + 1) % n
      可知,最后一个活着的人为0号,因此可以利用逆推的方法求得活着的那个人。*/

      public int LastRemaining_Solution(int n, int m) {
        if (n < 1 || m < 1) {
          return -1;
        }
        int live = getLive(n, m);
        return live;
      }
      public int getLive(int n, int m) {
        if (n == 0) {
          return 0;
        }
        return (getLive(n - 1, m) + m) % n;
     }

约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题的更多相关文章

  1. 剑指offer圆圈中最后剩下的数字 和 迭代器总结

    迭代器只有++ ,--,==,!=四种运算方法,不能将iter = iteration+ 1,因为迭代器是指针类型,1是整数类型,不能直接相加赋值给一个指针. 题目描述 每年六一儿童节,牛客都会准备一 ...

  2. 剑指Offer——圆圈中最后剩下的数(约瑟夫环)

    Question 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后, ...

  3. 剑指offer——圆圈中最后剩下的数字

    1.如果通过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),而且还需要一个辅助链表来模拟圆圈,空间复杂度为O(n). 2.通过找出递推公式的方法,求得递推公式为 时间复杂度为O(n),空间复杂度为 ...

  4. 剑指Offer 二进制中一的个数

    链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8 来源:牛客网 public class So ...

  5. 用js刷剑指offer(二进制中一的个数)

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 牛客网链接 思路 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为 ...

  6. 剑指 Offer 40. 最小的k个数 + 优先队列 + 堆 + 快速排序

    剑指 Offer 40. 最小的k个数 Offer_40 题目描述 解法一:排序后取前k个数 /** * 题目描述:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7. ...

  7. 剑指 Offer 40. 最小的k个数

    剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:ar ...

  8. 【剑指Offer】最小的K个数 解题报告(Python)

    [剑指Offer]最小的K个数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...

  9. 《剑指offer》最小的k个数

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

随机推荐

  1. AC日记——自然数和分解 codevs 2549

    自然数和分解 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; ][]; int main() { cin>> ...

  2. 【转载】WebService到底是什么?

    http://blog.csdn.net/wooshn/article/details/8069087/ 一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍 ...

  3. H264 帧边界识别简介

    http://blog.csdn.net/wzw88486969/article/details/50364017

  4. react native redux saga增加日志功能

    redux-logger地址:https://github.com/evgenyrodionov/redux-logger 目前Reac native项目中已经使用redux功能,异步中间件使用red ...

  5. HDU 4863 Centroid of a Tree

    树的重心,树形$dp$,背包. 树的重心有两个充分必要条件: $1$.某树有两个重心$a$,$b$ $<=>$ $a$与$b$相邻,断开$a$与$b$之间的边之后,两个联通分量内的点的个数 ...

  6. 日期(date)运用座谈会

    前言 最近老被小伙伴戳:其实这些都是些很基础的东西,一边完善工具类:一边整理一下关于date的常见运用:以后使用起来就不需要到处去找了:争取做到想要的这儿都有. 正文 private static f ...

  7. 简单说明CentOS源码安装程序

    第一步.安装依赖包.一般官网会有依赖关系,没有就网上搜索一下. 第二步.下载源码包,上传至CentOS服务器 第三步.解压缩 第四步.进入源码文件夹 第五步.执行./configure,这一步主要是为 ...

  8. 【动态规划】Gym - 101201A - Alphabet

    题意:一个字符串被定义为“alphabetical”,当且仅当它能够删除一些字符,变成“ab...yz”,给你一个只由小写字母组成的字符串,问你最少插入几个字母,使它变成“alphabetical”的 ...

  9. 【二项式定理】【推导】计蒜客17115 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin

    题意:投一枚硬币向上的概率是q/p.问你投K枚硬币,向上的枚数为偶数枚的概率是? 要求的即为. 这个东西是个二项展开式的偶数项系数和,来,我们复习一下高中数学,设f(x)=(ax+b)^n,则其偶数项 ...

  10. 【动态规划】【滚动数组】Educational Codeforces Round 26 D. Round Subset

    给你n个数,让你任选K个,使得它们乘起来以后结尾的0最多. 将每个数的因子2和因子5的数量求出来,记作a[i]和b[i]. 答案就是max{ min{Σa[i],Σb[i]} }(a[i],b[i]是 ...