62-圆圈中最后剩下的数字

题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求这个圆圈里剩下的最后一个数字。

def delete_circle_n(head,n):
    p = head
    while p!=p.next:
        i = 0
        while i<n:
            p = p.next
            i += 1
        q = p.next
        p.data = q.data
        p.next = q.next
        del q
    return p

  注:约瑟夫环问题,使用环形链表模拟求出最后剩下的一个节点,即p==p.next时的节点。

posted @ 2019-09-24 15:33  尘世中一个迷途小书童  阅读(172)  评论(0编辑  收藏  举报