题目描述
题目描述
题解
题解
提交记录
提交记录
中等

给你一个整数数组 nums

玩家 1 和玩家 2 基于这个数组设计了一个游戏。

玩家 1 和玩家 2 轮流进行自己的回合,玩家 1 先手。开始时,两个玩家的初始分值都是 0

每一回合,玩家从数组的 任意一端 取一个数字(即,nums[0]nums[nums.length - 1]),取到的数字将会从数组中 移除(数组长度减 1 )。玩家选中的数字将会加到他的得分上。当数组中没有剩余数字可取时,游戏结束。

如果玩家 1 能成为赢家,返回 true

注意,如果两个玩家得分相等,同样认为玩家 1 是游戏的赢家。你可以假设每个玩家的玩法都会使他的分数最大化。

 

示例 1:

输入:nums = [1,5,2]

输出:false

解释:

  • 玩家 1 必须先取 1 或 2,两种选择都会导致相同的结果。
  • 如果玩家 1 取 1,数组变为 [5, 2]。玩家 2 取 5,剩下 2 给玩家 1。
  • 如果玩家 1 取 2,数组变为 [1, 5]。玩家 2 取 5,剩下 1 给玩家 1。
  • 无论哪种情况,玩家 1 最终得到 1 + 2 = 3,玩家 2 得到 5。玩家 1 永远无法获胜,所以返回 false

示例 2:

输入:nums = [1,5,233,7]

输出:true

解释:

  • 玩家 1 先取 1,剩下 [5,233,7]。然后玩家 2 必须在 5 和 7 之间选择,无论玩家 2 选择哪个数字,玩家 1 在下一次回合都可以取 233。
  • 玩家 1 的得分(234)高于玩家 2(12),所以返回 true

 

提示:

  • 1 <= nums.length <= 20
  • 0 <= nums[i] <= 107
 
代码
代码
测试用例
测试用例
测试结果
测试结果