圆圈中最后剩下的数字

    0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
  例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。

示例 1:
输入: n = 5, m = 3
输出: 3

示例 2:
输入: n = 10, m = 17
输出: 2

限制:
    1 <= n <= 10^5
    1 <= m <= 10^6

 class Solution {
public int lastRemaining(int n, int m) {
if (n == 1)
return 0;
int now = lastRemaining(n - 1, m);
return (m % n + now) % n;
}
/* 淘汰顺序
n = 1:一个元素:0 0 最后一次淘汰的下标是0
n = 2:两个元素:0 1 3 % 2 + 0 == 1 1 % 2 == 1 0 1 最后一次淘汰的下标是1
n = 3:三个元素:0 1 2 3 % 3 + 1 == 1 1 % 3 == 1 2 0 1 最后一次淘汰的下标是1
n = 4:四个元素:0 1 2 3 3 % 4 + 1 == 4 4 % 4 == 0 2 1 3 0 最后一次淘汰的下标是0
n = 5:五个元素:0 1 2 3 4 3 % 5 + 0 == 3 3 % 5 == 3 2 0 4 1 3 最后一次淘汰的下标是3
*/
}

最新文章

  1. 【原】作为前端需要了解的B/S架构
  2. Python小游戏之猜数字
  3. Samba配置文件常用参数详解-OK
  4. cocos2d-x实战 C++卷 学习笔记--第5章 精灵
  5. python学习第十天 -- 函数
  6. python中的model模板中的数据类型
  7. 面向对象程序设计-C++_课时24多态的实现
  8. 怎么破解Wifi密码
  9. 添加组groupadd,修改组groupmod,删除组groupdel,将用户加入删除组gpasswd
  10. 书写Css文件要点
  11. 15-TypeScript策略模式
  12. IOC的理解,整合AOP,解耦对Service层和Dal层的依赖
  13. openpyxl工具总结
  14. what is MAC address
  15. python_代码中调用java类
  16. Percona Server 5.6 安装TokuDB
  17. clojure中符号symbols 和变量vars的正确理解
  18. Istio 1.1尝鲜记
  19. wifi测距
  20. 8.8.8.8和8.8.4.4 DNS域名解析服务器

热门文章

  1. 【Linux常见命令】xargs命令
  2. KAFKA官方教程笔记-introduction
  3. PHP字符串全排列算法
  4. VUE 后台管理系统权限控制
  5. spring bootweb综合开发的整理
  6. VUE生命周期中的钩子函数及父子组件的执行顺序
  7. 跟哥一起学Python(1) - python简介
  8. HDU1300Pearls
  9. 第3章:关系数据库标准语言 SQL
  10. spring学习笔记(四)我对spring中bean生命周期的理解