class Solution { public: int LastRemaining_Solution(int n, int m) { vector<int> num; if(n<1) return -1; for(int i=0;i<n;i++){ num.push_back(i); } int pre = 0;//记录上一次选中小朋友的位置 while(n>1){ int index = (pre+m-1)%n; //本题代码核心 num.erase(num.begin()+index,num.begin()+index+1); pre = index; n--; } return num.back(); } };
本题是一道链表题,用c++的vector较为方便,