Solution1 DP

  • 时间复杂度 O(n^2)

  • 空间复杂度 O(n^2)

dp[l][r] 表示在区间[l, r] 内,双方都做最优选择的情况下,先手与后手的得分差值

则 dp[1][n] 是 n 个堆的所有石子的双方的差值

  • dp[1][n] > 0,则先手赢

  • dp[1][n] < 0,则后手赢

不可能相等,应为总石子是奇数

状态转移方程:

这次先手从左边取(减去[l+1, r]中的最佳决策)

最大差值a = piles[l-1] - dp[l+1][r]

这次先手从右边取(减去[l, r-1]中的最佳决策)

最大差值b = piles[r-1] - dp[l][r-1]

dp[l][r] = max(a, b)

Last updated