https://leetcode.com/problems/elimination-game/description/
跟779那道题很像 都是观察一下规律,然后就行了
WA了一发,因为举得例子不够多。。。
class Solution {
public:
int dfs(int mmin, int mmax, int sp, bool reverse, int n) {
if (mmin == mmax) return mmin;
if (mmin + sp == mmax) {
if (reverse) return mmin;
else return mmax;
}
if (reverse) {
mmax -= sp;
if (n%2) mmin += sp;
} else {
mmin += sp;
if (n%2) mmax -= sp;
}
return dfs( mmin, mmax, sp * 2, reverse ? false : true, n/2);
}
int lastRemaining(int n) {
if (n <= 1) return n;
if (n%2) n--;
return dfs(1, n, 1, 0, n);
}
};