-
思路:
- 用向量存储成员编号
- 进入循环,只剩一位成员时,break
- 根据题意每次移除一个人
- 上一次的坐标加上每次移动个数减去1(上一次结束时的下一个坐标是这一次的开始)模剩的人的数量
- 需要考虑
mod = -1
的场景 - 移除失败者
-
代码:
class Solution { public: int findTheWinner(int n, int k) { vector<int> friends(n); for(int i = 0; i < n; i++){ friends[i] = i + 1; } //如果数组里的成员只剩下一位,那么break否则就一直循环 int index = 0; while(true){ if(friends.size() == 1) break; int old = k; old = (old + index - 1) % friends.size(); if(old < 0) old += 1; friends.erase(friends.begin() + old); index = old; } return friends[0]; } };
1823. 找出游戏的获胜者
最新推荐文章于 2024-08-23 09:59:49 发布