题目链接

https://leetcode-cn.com/problems/predict-the-winner/

题目说明

题解

主要方法:递推;动态规划;前缀和

解释说明:

  1. 求前缀和 pre_nums ,pre_nums[0] = 0, pre_nums[1+i] = sum(nums[0……i])

  2. 动态规划、递推:

    • 数据表示:设立二维数组dp,dp[i][j]表示区间 [i,j] 内先取者能取得的最大值。dpnums
    • 初始状态:遍历 nums 数组求得长度为 1 的区间 [i,i] 内的最大值,即 dp[i][i] = nums[i]
    • 动态方程:先后遍历长度l,起点i,dp[i][j] [i,j]内最大值 = pre_nums[j+1]-pre_nums[i] nums[i,j]的总和 - min(dp[i][j-1] 取尾端,则减去下一个人相应的最大值[i,j-1], dp[i+1][j]) 取首端,则减去下一个人相应的最大值[i+1,j]
  3. 数据输出:比较全部最大值与总和的一半 return dp[0][size-1] >= sum/2

代码示例:

class Solution:
def PredictTheWinner(self, nums: List[int]) -> bool:
size = len(nums)
# 求前缀和
pre_nums = [0]
for i in range(size):
pre_nums.append(pre_nums[-1]+nums[i])
dp, tmp = nums[:], []
# 动态规划,这里 dp 数组降维,重复使用
for l in range(2, size+1):
tmp.clear()
for i in range(size - l + 1):
tmp.append(pre_nums[i+l] - pre_nums[i] - min(dp[i], dp[i+1]))
dp = tmp[:]
return dp[0] >= pre_nums[-1]/2

每日一题 LeetCode 486. 预测赢家 【递推】【前缀和】【动态规划】的更多相关文章

  1. 每日一题-——LeetCode(486) 预测赢家

    题目描述: 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,…….每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到 ...

  2. Java实现 LeetCode 486 预测赢家

    486. 预测赢家 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,--.每次一个玩家只能拿取一个分数,分数被拿取之后不再可 ...

  3. leetcode 486 预测赢家

    题目描述 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,--.每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到没 ...

  4. Leetcode之动态规划(DP)专题-486. 预测赢家(Predict the Winner)

    Leetcode之动态规划(DP)专题-486. 预测赢家(Predict the Winner) 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端 ...

  5. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  6. 每日一题 LeetCode 491. 递增子序列 【递推】【递增子序列】【动态规划】

    题目链接 https://leetcode-cn.com/problems/increasing-subsequences/ 题目说明 题解 主要方法:递推:动态规划 解释说明: 数据表示:观察数据范 ...

  7. ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推)

    Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m. ...

  8. luogu题解 P1707 【刷题比赛】矩阵加速递推

    题目链接: https://www.luogu.org/problemnew/show/P1707 分析: 洛谷的一道原创题,对于练习矩阵加速递推非常不错. 首先我们看一下递推式: \(a[k+2]= ...

  9. LeetCode 70 - 爬楼梯 - [递推+滚动优化]

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2输出: 2解释: 有两种方 ...

随机推荐

  1. 手写mybatis框架

    前言 很久没有更新mybatis的源码解析了,因为最近在将自己所理解的mybatis思想转为实践. 在学习mybatis的源码过程中,根据mybatis的思想自己构建了一个ORM框架 .整个代码都是自 ...

  2. luogu P3796 【模板】AC自动机(加强版)

    知识点:1.一定要删掉调试信息 2.数组别重名 code: #include <bits/stdc++.h> using namespace std; int n; int len[]; ...

  3. 读取文本文件中的中文打印到Eclipse控制台为何显示问号

    原因:未将文本文件存为utf-8编码格式而是ascii编码格式.

  4. 说说ERP软件的系统设计--开源软件诞生8

    赤龙ERP系统设计篇--第8篇 用日志记录"开源软件"的诞生 赤龙 ERP 开源地址: 点亮星标,感谢支持,与开发者交流 kzca2000 码云:https://gitee.com ...

  5. python中的n次方表示法 **n

    例题:计算2的n次方,n由用户输入(N次方用**表示)# n=eval(input('手动输入n的值:')) #个人感觉,不确定是int还是float时,用eval来表示,eval后面接表达式# pr ...

  6. python模块之----subprocess

    例子 >>> subprocess.getstatusoutput('pwd')(0, '/home/ronny')>>> subprocess.getoutput ...

  7. 论文:Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering-阅读总结

    Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering-阅读总结 笔记不能简单的抄写文中 ...

  8. 第2课 - Hello, DTOS!

    第2课 - Hello, DTOS! 1. 主引导程序 主引导程序是软件还是固件?如果是软件,那么由谁开发?如何开发? (1)上一节说到了固件和软件的区别.由于主引导程序没有在出厂前固化到硬件中,因此 ...

  9. 浅入ABP(1):搭建基础结构的 ABP 解决方案

    浅入ABP(1):搭建基础结构的 ABP 解决方案 目录 浅入ABP(1):搭建基础结构的 ABP 解决方案 搭建项目基础结构 ApbBase.Domain.Shared 创建过程 ApbBase.D ...

  10. 解决IDEA打包出现中文乱码的问题

    这主要是maven编译时编码问题导致的. 解决办法: 1.在IDEA的File里面打开Settings. 2.找到Runner,在VM Options输入-DarchetypeCatalog=inte ...