394. Coins in a Line

最后更新

一刷。

用数学方法是看是不是3的倍数。

不用数学方法的话要动态规划。

当前玩家,dp[i]行不行取决于dp[i-1]和dp[i-2],代表下一个玩家能不能赢,另一个玩家能赢的话当前就不能赢;另一个玩家不能赢,当前就能赢。

因为当前玩家可以通过拿1个或者拿2个来左右结果。

dp[i] = !dp[i-1] || !dp[i-2];

然后滚动数组滚起来。。

public class Solution {
public boolean firstWillWin(int n) {
if (n == 0) return false; boolean[] dp = new boolean[3];
dp[0] = true;
dp[1] = true;
dp[2] = false; for (int i = 3; i < n; i++) {
dp[i%3] = !dp[(i-1)%3] || !dp[(i-2)%3];
} return dp[(n-1)%3];
}
}
上一篇:Android---控制设备照相机


下一篇:mysql之导入与导出