输入:一个环形单链表的头结点head和报数的值m。
返回:最后生存下来的节点,且这个节点自己组成环形单向链表,其他节点都删掉。
进阶:如果链表节点数为N,想在时间复杂度O(N)时完成原问题的要求,该如何实现?

public class JosephusKill1 {public class Node{public int value;public Node next;public Node(int data){this.value=data;}}
public Node josephusKill1(Node head,int 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;
}
public Node josephusKill2(Node head,int m){if(head==null||head.next==head||m<1){return head;}Node cur=head.next;int tmp=1;//tmp指向list sizewhile(cur!=head){tmp++;cur=cur.next;}tmp=getLive(tmp,m);//tmp指向service node positionwhile(--tmp!=0){head=head.next;}head.next=head;return head;
}
public int getLive(int i,int m){if(i==1){return 1;}return (getLive(i-1,m)+m-1)%i+1;
}
}

环形单链表的约瑟夫问题相关推荐

  1. 构造数组MaxTree、环形单链表的约瑟夫问题等总结

    1.构造数组的MaxTree 定义二叉树节点如下: public class Node{ public int value; public Node left; public Node right; ...

  2. 左神算法:环形单链表的约瑟夫问题(Java版)

    本题来自左神<程序员面试代码指南>"环形单链表的约瑟夫问题"题目. 题目 据说,著名犹太历史学家 Josephus 有过以下故事: 在罗马人占领乔塔帕特后,39 个犹太 ...

  3. 链表问题6——环形单链表的约瑟夫问题(初阶)

    题目 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方 ...

  4. 链表问题18——向有序的环形单链表中插入新节点

    题目 一个环形链表从头节点开始的顺序为不降序的顺序,也就是如1->2->2->2->3->4这样的链表叫做不降序,同时由最后的节点指回头节点.给定这个环形单链表的头节点h ...

  5. Coding Interview Guide -- 向有序的环形单链表中插入新节点

    [题目] 一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点.给定这样一个环形单链表的头节点head和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后 ...

  6. 单链表实现约瑟夫环问题

    经典的约瑟夫环问题,用单链表实现竟然这么简单!? 目录 前言 问题 思路 代码 前言 这两天想到了之前自己用数组实现约瑟夫环问题时写了好多的代码,然后想到数据结构中的但链表好像也可以实现,于是去实践了 ...

  7. java 约瑟夫问题 链表_【链表问题】环形单链表约瑟夫问题

    前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢 [题目描述] [要求] 输入:一个环形单 ...

  8. java 单链表约瑟夫环_java循环单链表实现约瑟夫环问题

    package SingleLinkList; //节点类 class Node{ private int data; private Node next; public int getData() ...

  9. 数据结构-循环单链表之约瑟夫问题

    约瑟夫问题的由来: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定 ...

最新文章

  1. 修改Vista系统目录权限
  2. 强化学习大规模应用还远吗?Youtube推荐已强势上线
  3. mysql遇到your password does not satisfy the current policy requirements
  4. oracle循环语句loop,oracle循环语句loop
  5. Linux 文件系统详解
  6. OpenGL 纹理坐标的实例
  7. Linux 如何创建新文件、修改文件权限、新文件读写 ?
  8. [USACO12NOV]同时平衡线Concurrently Balanced Strings DP map 思维
  9. JavaScript高级程序设计 中文PDF下载
  10. 小郡肝火锅点餐系统——测试部署发布
  11. 绿色环保静态网页设计
  12. 百度网盘分享旁边的个人说明如何修改
  13. 为 Vue 项目添加 cnzz 统计
  14. 亚里士多德对于知识的分类
  15. android 合并分区说明,Android系统手机sd卡分区后合并图文详解
  16. arch nvidia驱动安装记录
  17. 免费电子书 工具 开发工具包 各类资源 下载 .
  18. 易基因技术推介|简化基因组甲基化测序研究解决方案
  19. 饼图加引导线_如何在饼形图中添加引导线(Excel)/
  20. ubuntu10.10下更新无线网卡驱动

热门文章

  1. 详解HTML5网页结构
  2. pom.xml 配置maven私服
  3. 5个节点hadoop安装(zookeeper)
  4. FairScheduler的任务调度机制——assignTasks
  5. [HDU] 1533 Going Home
  6. 到今天上了一个月班了,功能基本实现了.
  7. Objective-C ,ios,iphone开发基础:UIAlertView使用详解
  8. HTML文本样式标签
  9. 正常使用 flex profiler 解决 Socket timeout
  10. org.apache.axis.ConfigurationException: No service named ldapOperate is available解决方法