インタビューの質問62.サークルの最後に残った番号
アイデア:f(n、m)=(f(n-1、m)+ m)%n。ジョセフ問題
ライティング1
class Solution {
public:
int lastRemaining(int n, int m) {
if(n==1) return 0;
return (lastRemaining(n-1, m)+m)%n;//f(n,m) = (f(n-1,m)+m)%n
}
};
2つを書く
class Solution {
public:
int lastRemaining(int n, int m) {
int res = 0;
for(int i=2;i<=n;i++)
res = (res+m)%i;
return res;
}
};