博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
阅读量:6969 次
发布时间:2019-06-27

本文共 824 字,大约阅读时间需要 2 分钟。

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;
     }

转载于:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7399300.html

你可能感兴趣的文章
抽象工厂之更换皮肤
查看>>
在WPF的WebBrowser控件中抑制脚本错误
查看>>
C#性能优化:延迟初始化Lazy<T>
查看>>
设计模式笔记——设计模式原则总结
查看>>
浏览器解析html全过程详解
查看>>
sqlserver中有没有类似oracle中dual这样的表
查看>>
阿里双十一背后的技术
查看>>
试用许可证的疑惑
查看>>
使用Button组件
查看>>
各Spring-Boot-Starters介绍(转)
查看>>
测试赛3部分题题解及总结
查看>>
阿里巴巴为什么主推HSF?比Dubbo有哪些优势?
查看>>
AI技术落地医疗搜索 搜狗明医独家首推“湿疹痱子识别”功能
查看>>
中国又一项技术让世界叹服,世界500强抢着合作!
查看>>
年薪百万都招不来人,AI与区块链的技术人才有多稀缺?|技术大会
查看>>
一起撸个朋友圈吧 - 重构
查看>>
图片懒加载
查看>>
「面经:面试 ThoughtWorks | 掘金技术征文」
查看>>
Android和iOS开发中的异步处理(四)——异步任务和队列
查看>>
iOS开发之 Autolayout 详解
查看>>