0,1,…,n-1這n個數字排成一個圓圈,從數字0開始,每次從這個圓圈裏刪除第m個數字。求出這個圓圈裏剩下的最後一個數字。html
例如,0、一、二、三、4這5個數字組成一個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是二、0、四、1,所以最後剩下的數字是3。python
示例 1: 輸入: n = 5, m = 3 輸出: 3 示例 2: 輸入: n = 10, m = 17 輸出: 2 限制: 1 <= n <= 10^5 1 <= m <= 10^6
來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。web
個人博客 鏈表: 約瑟夫環問題數組
極限數據下,超時了網絡
class Solution { public: int lastRemaining(int n, int m) { vector<int> num(n); int i; for(i = 0; i < n; i++) num[i] = i; i = 0; while(num.size() != 1) { i = (i+m-1)%num.size(); num.erase(num.begin()+i);//不斷的刪除 } return num[0]; } };
參考別人的解法app
class Solution { public: int lastRemaining(int n, int m) { int pos = 0;//1我的時 for(int i = 2; i <= n; i++) { //i表示人數 pos = (pos+m)%i; } return pos; } };