最后更新 一刷. 用数学方法是看是不是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…