Recursion + Memorized Search(DP). And apparently, the code below can be iterative with only 3 vars - DP.
class Solution { unordered_map<int, bool> cache; public: bool go(int n) { if (n <=0) return false; if (n < 3) return true; if(cache.find(n) == cache.end()) { cache[n] = !go(n - 1) || !go(n - 2); } return cache[n]; } /** * @param n: an integer * @return: a boolean which equals to true if the first player will win */ bool firstWillWin(int n) { return go(n); } };
时间: 2024-10-11 00:42:31