循环链表
解决约瑟夫环
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
首先定义一个环形链表,先初始化n个人,用for语句,形成环形链表,定义一个head,cur,boy(待插入的),从1开始,游戏就是1开始。如果j=1,就新建boy把boy当head,然后cur.next=cur自身形成环形。不是,就把cur.next=boy,boy.next=head,cur=boy,形成环。
12345678910111213141516171819ListNode first=null; ListNode help=null;//解决约瑟夫问题的节点 ListNode cur=null; for (int i = 1; i <=n; i++) ...
First Blog
First Blog第一篇blog,大家好