美文网首页
约瑟夫环

约瑟夫环

作者: 小幸运Q | 来源:发表于2021-04-24 17:47 被阅读0次

    image.png

    暴力

    class Solution {
    public:
        int lastRemaining(int n, int m) {
            list<int>l;
            for(int i=0;i<n;i++){
                l.push_back(i);
            }
            list<int>::iterator start=l.begin();
            while(l.size()>1){
                for(int i=0;i<m-1;i++){
                    if(start==l.end()){
                        start=l.begin();
                    }
                    start++;
                }
                if(start==l.end()){
                    start=l.begin();
                }            
                start=l.erase(start);
            }
            return *l.begin();
        }
    };
    

    数学方法

    f(n,m) = [f(n-1, m) + m] % n

    class Solution:
        def lastRemaining(self, n: int, m: int) -> int:
            dp={}
            dp[2,m]=m%2
            for i in range(3,n+1):
                dp[i,m]=(dp[i-1,m]+m)%i
            # print(dp)
            return dp[n,m]
    

    相关文章

      网友评论

          本文标题:约瑟夫环

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