劍指offer 面試題62 圓圈中最後剩下的數字

2021-10-04 18:13:04 字數 392 閱讀 1260

問題:0,1,,n-1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。

例如,0、1、2、3、4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2、0、4、1,因此最後剩下的數字是3。

思路1:環形鍊錶模擬圓圈

複雜度分析:時間複雜度為o(mn),空間複雜度為o(n).

思路2:分析每次被刪除的數字的規律並直接計算出圓圈中最後剩下的數字

定義f(n,m)為從0到n-1中刪除第m個數字,迴圈到最後只剩下的1個數字。

遞迴**:

class solution 

};

複雜度分析:時間複雜度為o(n),空間複雜度為o(1).

劍指offer 面試題62 圓圈中最後剩下的數字

面試題 劍指offer 題目解答 0,1,n 1這n個數字排成乙個圈,從數字0開始,每次從這個圓圈裡刪除第m個數字,求這個圓圈裡剩下的最後乙個數字。書中給出了乙個經典的環形鍊錶的解題方法,但是在n數字較大的時候,你會發現,再環中的很多數字都會被多次重複遍歷,並且需要乙個輔助鍊錶來進行操作。所以,使用...

劍指Offer 面試題45 圓圈中最後剩下的數字

圓圈中最後剩下的數字 0,1,n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡 剩下的最後乙個數字。這是c語言書上的一道題目 設定乙個剪枝陣列,設定乙個迴圈,迴圈出口是只剩乙個元素,剛開始置剩餘元素總數目為n,後面會更新。注意每次當計數器變數走到n時,表明乙個...

劍指Offer 面試題45 圓圈中最後剩下的數字

題目 0,1,n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。思路 下面,我們主要介紹,用動態規劃來解決問題的方式。1 首先,我們定義乙個關於n m的方程 f n,m 該方程表示在n個數字中每次刪除第m個數字最後剩下的數字 根據1中的定義,...