题解 | 约瑟夫问题II
约瑟夫问题II
https://www.nowcoder.com/practice/ff063da83b1a4d91913dd1b1e8b01466
#include <vector> class Joseph { public: int getResult(int n) { // write code here vector<int> people; for (int i = 1; i <= n; i++) people.emplace_back(i); int round = 1; int idx = 0; while (people.size() > 1) { vector<int> remain; int count = 1; for (int i = 0; i < people.size(); ++i) { int pos = (idx + i) % people.size(); if (count == 1) { remain.emplace_back(people[pos]); } ++count; if (count > round + 1) count = 1; } people = remain; idx = people.size() - 1; ++round; } return people.back(); } };