leetcode_1025
Alice and Bob take turns playing a game, with Alice starting first.
Initially, there is a number N on the chalkboard. On each player's turn, that player makes a move consisting of:
Choosing any x with 0 < x < N and N % x == 0. Replacing the number N on the chalkboard with N - x. Also, if a player cannot make a move, they lose the game.
Return True if and only if Alice wins the game, assuming both players play optimally.
Example 1:
Input: 2 Output: true Explanation: Alice chooses 1, and Bob has no more moves. Example 2:
Input: 3 Output: false Explanation: Alice chooses 1, Bob chooses 1, and Alice has no more moves.
Solutions
math
When the initial number is an even number, then he can choose 1, then the other player meet an odd number, since factors of odd numbers are odd numbers too, when he choose a odd numbers, the left number for the first player is an even number again, at last, the first player can always get 2(means he wins).
dynamic programming O(n2)
dp[i]
represent if the first player woud win when he starts the game with numberi
.Check all possible factors, check if
cur - factor
's state is loose, if this is true, thendp[cur] = true
.
Last updated
Was this helpful?