一开始想到的使用一个链表实现这个功能,当计数到时直接删除那个节点,如此循环,最后一个节点就是幸运星。
但是这次我重新思考,觉得使用链表还是太过于复杂,因此我这次使用了一个vector来时,当符合计数条件时,直接移除这个数据,最后vector大小为1的时候,就是找到了幸运星。
class Solution { public: int LastRemaining_Solution(int n, int m) { if(n<=0) return -1; if(n==1) return n; vector<int> children(n); for(int i = 0;i<children.size();i++) children[i] = i; int temp = 0; while(children.size()>1) { int count = temp+m-1; int size = children.size(); int num = count%size; temp = num; children.erase(children.begin()+num); } return children[0]; }
};