首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    约瑟夫问题链表实现(Java

    面试中可能经常会遇到约瑟夫问题,逻辑上很简单,就是看怎么实现了,一般而言,最简单最直观的就是利用链表,然后构建一个循环结构,正好是,最后计算出结果。...遍历环形链表会是一个无限循环,如果链表中的数据逐渐减少,不控制终究会一个不剩,这又不满足我们问题的求解,因此我们需要定义出循环结束的条件,按照约瑟夫的规则,只剩下一个的时候就结束,在环形链表结构中,那就是结点本身的下一个节点就是它自己...这里给出Java版本的实现: package com.xxx.algorithm.wh; //约瑟夫java实现 //约瑟夫问题的起源来自犹太历史学家约瑟夫和他的朋友以及39其余的犹太人,总共41人为了躲避敌人...count(4); //41个人为例,就是约瑟夫的本身了,最后剩下的是31 count(41); } } class Node{ int data; Node next; public...41->7->13->20->26->34->40->8->17->29->38->11->25->2->22->4->35->16->(left:31) 打印结果既验证了只有4个结点的情况,也验证了约瑟夫的本身的结论

    43010

    约瑟夫问题详解

    在牛客网上做到一道题,是约瑟夫的变型,所以借此学习一下新知识,并且巩固一下对题目意思的理解,这一篇仅作约瑟夫问题的解释,下一篇再写题目: ##1.首先,我们先来了解一下什么是约瑟夫问题: 讲一个比较有意思的故事...##2.这就是约瑟夫问题,接下来我们说个特例初步了解下这种问题的求解思路: 特例:2,当q = 2时候,是一个特例,能快速求解 特例还分两种 ###1.思路:注意这里的前提是n = 2^k(也就是...q个人 约定: Jq(n)表示n人构成的约瑟夫,每次移除第q个人的 n个人的编号从0开始至n-1 我们沿用之前特例的思想:能不能由Jq(n+1)的问题缩小成为J(n)的问题(这里的n是n+1规模的约瑟夫问题消除一个元素之后的答案...),Jq(n)是在Jq(n+1)基础上移除一个人之后的。...此文章重新整理在约瑟夫问题详解里了,修改了之前写过程中存在的一些错误,并添加了一些新的推导过程,谢谢指出错误之处.

    41410
    领券