美文网首页
约瑟夫环问题(基本和进阶)

约瑟夫环问题(基本和进阶)

作者: 柴崎越 | 来源:发表于2019-03-01 17:47 被阅读0次

一,问题描述

图片.png

二,一般解法

public static 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;
    }

每一个结点,都要走m步,所有时间复杂度为O(m*n),进阶解法要求做到时间复杂度O(n)

三,进阶解法

3.1 分析

当给定结点的数量和报的数就可以确定最后幸存的结点
base case:当只有一个结点时,结点的编号为1,所以只要确定f(i)和f(i-1)的关系,就可以得出f(N)的结果(即在节点个数为n的情况下的幸存的结点的编号)

图片.png
图片.png
图片.png
设函数名为getLive(int i(元素的个数),int m(报数))
函数体
{

}

相关文章

  • 约瑟夫环问题(基本和进阶)

    一,问题描述 二,一般解法 每一个结点,都要走m步,所有时间复杂度为O(m*n),进阶解法要求做到时间复杂度O(n...

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 约瑟夫环问题

    0~n-1个数排成环,每次从中删除第m个数字后,问最后剩下的数字是多少 思路:使用链表模拟环状结构,到达尾部时使其...

  • 约瑟夫环问题

    思路 递推,f(n)与f(n-1)的关系,已经f(1)已知,O(n)的复杂度求出结果。f(n) = (f(n-1)...

  • 约瑟夫环问题

    约瑟夫环:30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某...

  • 约瑟夫环问题

    参考文章 约瑟夫环之二(用递归的思想解决Josephus问题) 解释 解法 初始情况: 0, 1, 2 ........

  • 约瑟夫环问题

    问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编...

  • 约瑟夫环问题

    题目:一圈人围坐,以数字K位第一个个人,叫道 M 的人自动出列,请写出出列顺序 第一种方法:使用单项循环链表实现 ...

  • 约瑟夫环问题

    在刷leetCode 的时候碰到了以下问题:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始...

  • 约瑟夫环问题

网友评论

      本文标题:约瑟夫环问题(基本和进阶)

      本文链接:https://www.haomeiwen.com/subject/icaduqtx.html