2027年[LeetCode]486.预测赢家
2026-07-06
王柯志愿规划

题目链接: https://leetcode-cn.com/problems/predict-the-winner
难度:中等
通过率:46.2%
题目描述:
给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。
给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。
示例:
示例 1:

?
输入: [1, 5, 2] 输出: False 解释: 一开始,玩家1可以从1和2中进行选择。 如果他选择2(或者1),那么玩家2可以从1(或者2)和5中进行选择。如果玩家2选择了5,那么玩家1则只剩下1(或者2)可选。 所以,玩家1的最终分数为 1 + 2 = 3,而玩家2为 5。 因此,玩家1永远不会成为赢家,返回 False。
示例 2:
?
输入: [1, 5, 233, 7] 输出: True 解释: 玩家1一开始选择1。然后玩家2必须从5和7中进行选择。无论玩家2选择了哪个,玩家1都可以选择233。 最终,玩家1(234分)比玩家2(12分)获得更多的分数,所以返回 True,表示玩家1可以成为赢家。

注意:
- 1 <= 给定的数组长度 <= 20.
- 数组里所有分数都为非负数且不会大于10000000。
- 如果最终两个玩家的分数相等,那么玩家1仍为赢家。
思路:
动态规划
思路一:自顶向下
代码:
思路一:
class Solution:
def PredictTheWinner(self, nums: List[int]) -> bool:
import functools
@functools.lru_cache(None)
def dfs(left, right):
if right < left:
return 0
return max(
nums[left] + min(dfs(
如需高考志愿指导,可联系网站客服获取!助你成功率提升90%!
学员评价

推荐阅读:
2027年考研西北大学633&823物理学闻枫学姐初试成绩300+经验分享
2027年考研西北大学化学专业636&826分析化学(含仪器分析)物理化学黑黑学姐
2027年考研山东大学621&817英语小K学姐专业课第二经验分享
2027年考研兰州大学211&357&448英语笔译瑞瑞学姐总分400+经验分享
2027年考研安徽大学632&828生物学阳阳学姐专业排名靠前经验分享
2027年考研,数学1000题,1800,和660到底该用哪个好?
2027年考生注意!北京中考600630分考生都考哪了?
2027年考研山东建筑大学702&907马克思小孟学姐专业课250+经验分享
2027年考研内蒙古702+802马克思主义理论柚子学姐双非跨考逆袭考研经验分享
2027年考研379分|西财税务433保姆级攻略
2027年考研北京邮电大学614&817语言学小凡学姐专业课110+考研经验分享
2027年考研复旦大学436资产评估基础Linus学长总分第一自学三跨一战上岸
2027年考研大连理工大学621&868哲学桃子学姐专业课142考研经验分享
2027年聚焦重庆物理470分:优质民办工科院校录取机会盘点
2027年考研同济631+839生物泽泽学长总分第七连年中压轴题