Coins in a Line
n = 1, return true.
n = 2, return true.
n = 3, return false.
n = 4, return true.
n = 5, return true.n = 1, return true.
n = 2, return true.
n = 3, return false.
n = 4, return true.
n = 5, return true.public class Solution {
/**
* @param n: An integer
* @return: A boolean which equals to true if the first player will win
*/
public boolean firstWillWin(int n) {
if (n == 0) return false;
else if (n < 3) return true;
boolean[] dp = new boolean[n + 1];
dp[0] = false;
dp[1] = true;
dp[2] = true;
for (int i = 3; i < n + 1; ++i) {
dp[i] = ! dp[i - 1] || ! dp[i - 2];
}
return dp[n];
}
}public class Solution {
/**
* @param n: An integer
* @return: A boolean which equals to true if the first player will win
*/
public boolean firstWillWin(int n) {
if (n == 0) return false;
else if (n < 3) return true;
boolean[] dp = new boolean[3];
dp[0] = true;
dp[1] = true;
for (int i = 3; i <= n; ++i) {
dp[(i - 1) % 3] = ! dp[(i - 2) % 3] || ! dp[(i - 3) % 3];
}
return dp[(n - 1) % 3];
}
}