约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
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圆圈中最后一个数问题的更多相关文章
- 剑指offer圆圈中最后剩下的数字 和 迭代器总结
		
迭代器只有++ ,--,==,!=四种运算方法,不能将iter = iteration+ 1,因为迭代器是指针类型,1是整数类型,不能直接相加赋值给一个指针. 题目描述 每年六一儿童节,牛客都会准备一 ...
 - 剑指Offer——圆圈中最后剩下的数(约瑟夫环)
		
Question 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后, ...
 - 剑指offer——圆圈中最后剩下的数字
		
1.如果通过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),而且还需要一个辅助链表来模拟圆圈,空间复杂度为O(n). 2.通过找出递推公式的方法,求得递推公式为 时间复杂度为O(n),空间复杂度为 ...
 - 剑指Offer 二进制中一的个数
		
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8 来源:牛客网 public class So ...
 - 用js刷剑指offer(二进制中一的个数)
		
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 牛客网链接 思路 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为 ...
 - 剑指 Offer 40. 最小的k个数 + 优先队列 + 堆 + 快速排序
		
剑指 Offer 40. 最小的k个数 Offer_40 题目描述 解法一:排序后取前k个数 /** * 题目描述:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.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 ...
 - 【剑指Offer】最小的K个数 解题报告(Python)
		
[剑指Offer]最小的K个数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...
 - 《剑指offer》最小的k个数
		
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
 
随机推荐
- AC日记——自然数和分解 codevs 2549
			
自然数和分解 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; ][]; int main() { cin>> ...
 - 4.Spark Streaming事务处理
			
首先,我们必须知道什么是事务及其一致性? 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性. 原子性(atomicity).一个事务是一个不可分割的工作单位,事务中 ...
 - magento后台语言
			
Magento后台自身携带了一个语言切换的功能,见后台左下角 你会发现长长的一串,其中绝大多数语言你可能根本没有机会用到,而你想要从中文切换到英文时,每次都要瞪大眼睛去找英文在下拉框的哪个位置,所以精 ...
 - Docker与Android Studio的冲突问题
			
在行业内,VisualBox.VMware.Hyper-V冲突也不是什么秘密了 我在公司的电脑上先安装了Docker,并在安装Docker之前在BIOS中开启了虚拟化支持,所以在启动Docker时没有 ...
 - textarea 内容不可编辑 自是适应高度 只读相关属性配置
			
不可编辑: <textarea disabled="disabled"></textarea> 如果仅仅用于禁止输入(只读,但有用),使用readonly属 ...
 - 关于在windows下部署发布QT程序的总结
			
原文请看:http://www.cnblogs.com/javaexam2/archive/2011/05/18/2632916.html 关于在windows下部署发布QT程序的总结 2008-06 ...
 - div的border & width
			
长时间不用css,发现有些基础知识竟有些遗忘,由于项目中的一些css样式,进行了以下相关测试. div的width及height均设置为0后,div的border会怎样显示.经过测试后,发现borde ...
 - 洛谷—— P1598 垂直柱状图
			
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...
 - java面试笔试总结(一)--亲生经历的面试题
			
说明:本文只是自己的一些心得体会,答案也是自己写的,正确与否,还需考证 java笔试题 1java笔试题1 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7 ...
 - python函数式编程之匿名函数、装饰器、偏函数
			
匿名函数 当我们在传入函数时,有些时候,不需要显式的定义函数,直接传入匿名函数就行.如下面 lambda x: x*x 在python中,关键字lambda表示匿名函数,冒号前面的x表示函数参数 匿名 ...