约瑟夫环
来源:互联网 发布:weibull++软件下载 编辑:程序博客网 时间:2024/06/12 00:51
具体问题我就不描述了,就是著名的约瑟夫问题。
解决方法:
1,普通解法,时间复杂度O(n*m):
使用循环链表,返回唯一剩下的节点。
private Node josephusKill(Node head,int m){ //head是一个循环链表,m表示从1数到第m个数,第m个数被去除 if(head == null || head.next == head ||m<1){ return head; } Node last = head; while(last.next != head){ last = last.next; } int count = 0; while(head != last){ if(++count == m){ last.next = head.next; count = 0; }else { last = last.next; } head = last.next; } return head;}2,可以直接算出活下来的人的最初位置
private int getLive(int n,int m){ if(n == 1){ return 1; } return (getLive(n-1,m)+m-1)%n+1;}
阅读全文
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- TextMining Word Embedding
- 【9月阅读计划】2017
- 死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法
- ShortcutBadger快捷方式通知
- eclipse中java project转换为java web project的方法
- 约瑟夫环
- Leetcode c语言-Roman to Integer
- Trucking HDU2962
- const、static、extern的用法
- 美国高通 Snapdragon Neural Processing Engine SDK (SNPE) 系列 (2):支持的网络层
- 微信小程序input表单页面实例,redio和下拉列表获取数据
- JAVA基础
- Linux内核学习笔记
- Elasticsearch-terms搜索及结果优化