剑指Offer 圆圈中最后剩下的数

    xiaoxiao2024-12-07  51

    题目描述:  把0 ,1 ,……, n-1这n个数排成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字。 求这个圆圈剩下的最后一个数字 

    解析:可用list模仿环形链表来解决

    class Solution { public: int LastRemaining_Solution(int n, int m) { if(n < 1|| m < 1) return -1; list<int> l; for(int i=0;i<n;++i) l.push_back(i); auto it = l.begin(); while(l.size() != 1){ for(int i=0;i<m-1;i++) { ++it; if(it == l.end()) it = l.begin(); } auto next = ++it; --it; if(next == l.end()) next = l.begin(); l.erase(it); it = next; } return (*it); } };

     

    最新回复(0)