Python約瑟夫環問題


在2019騰訊提前批實習的筆試題中就出現了約瑟夫環的問題,

當時我用collections.deque來做的,每次動態的刪除節點,並重新改變指向來實現的,

並沒有細想過有沒有更快的方法。

(由於這種方法過於簡單,就不羅列出來了,需要的朋友自行了解deque的leftappend子方法即可)

參考知乎的這篇博客,我受到了很大的啟發

因此記錄其中的遞歸方法在這里,方便自己復習。

index before 1 2 3 4 5 6
第1輪 1 2 x 4 5 6
第2輪 4 5 x 1 2 3
第3輪 1 2 x 3 4 x
第4輪 2 3 x x 1 x
第5輪 2 x x x 1(3) x
最后結果 1 x x x x x

下一輪刪除節點后的編號是 old = (new + m - 1) % n + 1

def joseph(int n, int m)
    if(n == 1):
    	return n;
    return (self.joseph(n - 1, m) + m - 1) % n + 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM