劍指62 圓圈中最後剩下的數字

2021-08-19 21:43:14 字數 322 閱讀 6302

題目: 0~n-1的n個數排成乙個圓圈,從0開始每次從這個圓圈刪除第m個數字,然後從刪除的數字的下乙個數字開始繼續直到剩最後1個數字位置。

方法1:用list模擬圓圈 的環形鍊錶 每次迴圈到end()時都手動更新到begin() 效率不高

stl list使用

class solution 

cur = circle.erase(cur);

if(cur == circle.end())

cur = circle.begin();

}return *cur;

}};

劍指 62 圓圈中最後剩下的數字

題目描述 0,1,n 1這n個數字排成乙個圓圈,從數字0開始每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。演算法分析 方法一 使用鍊錶來模擬圓圈,時間複雜度為o mn 空間複雜度o n 方法二 約瑟夫環問題的數學公式法求解,公式推導見約瑟夫環問題 最簡單的數學解法 得到公式f n...

劍指 Offer 62 圓圈中最後剩下的數字

題目 題目描述 0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。示例 1 輸入 n 5...

劍指 Offer 62 圓圈中最後剩下的數字

0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。示例 1 輸入 n 5,m 3 輸出 ...