劍指offer25

題目描述

0,1,...,n-1這n個數字排成一個圓圈,從數字0開始,每次從這個圓圈裏刪除第m個數字。求出這個圓圈裏剩下的最後一個數字。java

解題思路分析

這個分析仍是挺麻煩的,劍指offer書本分析的很好,我就直接上代碼了 遞歸公式 spa

代碼實現

public int lastRemaining(int n, int m) {
    if (n < 1 || m < 1) {
        return -1;
    }
    int last = 0;
    //使用循環實現,當n很大時也不會有很高的複雜度
    for (int i = 2; i <= n; i++) {
        last = (last + m) % i;
    }
    return last;
}
複製代碼
相關文章
相關標籤/搜索