leetcode486. 预测赢家(动态规划)

给定一个表示分数的非负整数数组。 玩家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。

解题思路

数组含义:dp[i][j]数组nums(i,j)的先手分数和后手分数的最大差
状态转移:dp[i][j]= Math.max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1])
两种转移状态1.先手从左边拿2.先手从右边拿

代码

class Solution {public boolean PredictTheWinner(int[] nums) {int n=nums.length;int[][] dp=new int[n][n];for(int i=n-2;i>=0;i--)for(int j=i+1;j<n;j++)dp[i][j]= Math.max(nums[i]-dp[i+1][j],nums[j]-dp[i][j-1]);return dp[0][n-1]>=0;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

w550官方例程_急!求索爱w550的刷机所需要的所有文件! 全部分送上!

展开全部W550c行货软件升级使用国内行货W550c手机的朋友&#xff0c;将来是可以在62616964757a686964616fe58685e5aeb931333238646330官方网站使用随机数据线免费升级的&#xff0c;目前W550c的最新版本是R4AB048但是由于目前官方网站还未提供&#xff0c;大家敬请期待。W550c索…

python的xpath用法介绍_python爬虫之xpath的基本使用详解

本篇文章主要介绍了python爬虫之xpath的基本使用详解&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起过来看看吧一、简介XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素&#xff…

杨波 微服务技术专家_专家称,这些是最有效的微服务测试策略

杨波 微服务技术专家by Jake Lumetta杰克卢米塔(Jake Lumetta) 专家称&#xff0c;这些是最有效的微服务测试策略 (These are the most effective microservice testing strategies, according to the experts) Testing microservices is hard. More specifically, end-to-end…

LRU算法实现

LRU是Last Recent Used 缩写&#xff0c;做为一种缓存算法&#xff0c;将最近较少使用的缓存失效。memcache采用了该算法。如下采用了一种PHP的实现方式。该算法将每次新增的内容&#xff0c;放到缓存顶部&#xff0c;达到缓存极限时&#xff0c;将缓存底部的内容清除。可以通过…

Java中的阻塞队列-LinkedBlockingQueue(二)

原文地址&#xff1a;http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8%B0%88%E8%B0%88LinkedBlockingQueue/ 在集合框架里&#xff0c;想必大家都用过ArrayList和LinkedList&#xff0c;也经常在面试中问到他们之间的区别。…

自动加密企业关键业务数据 赛门铁克推出全新信息保护解决方案

最新推出的Symantec Information Centric Security解决方案&#xff0c;能够帮助企业随时随地对数据进行自动加密、跟踪和撤销&#xff0c;提供卓越的可见性和管控力 近日&#xff0c;全球网络安全领域的领导者赛门铁克公司宣布推出一款全新的高级信息保护工具 Symantec Inform…

leetcode312. 戳气球(动态规划)

有 n 个气球&#xff0c;编号为0 到 n-1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i &#xff0c;就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻…

碳钢腐蚀速率计算公式_镁合金轮毂螺栓连接的电偶腐蚀行为

环境污染和能源短缺促使日益发达的汽车工业大力推进构件轻量化&#xff0c;镁合金是最轻的结构材料之一&#xff0c;构件采用镁合金制造可以在减重的同时不降低结构强度&#xff0c;受到汽车工业的青睐。轮毂作为汽车的主要组成部件&#xff0c;其轻量化是汽车节能减排的有效途…

第七周总结

2019第七周作业 本周作业头 这个作业属于那个课程C语言程序设计II这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2939我在这个课程的目标是理解指针数组和地址之前的关系及应用这个作业在那个具体方面帮助我实现目标practice参…

python大纲图_Python课程大纲

课程大纲被分成6个部分&#xff0c;每个部分又被分解为多个阶段&#xff0c; 而每个阶段包含了多个Try, Workshop, FactToFace, Apply. 这里只列出部分&#xff0c;和阶段&#xff1a;CHAPTER 0 : 预科[可选]Linux使用&#xff0c;常用CMD&#xff0c;服务配置&#xff0c;IDE&…

如何使用Google Authenticator在ASP.NET Core中设置两因素身份验证

介绍 (Introduction) In this article, we are going to learn how to perform two-factor authentication in an ASP.NET Core application using the Google Authenticator app.在本文中&#xff0c;我们将学习如何使用Google Authenticator应用程序在ASP.NET Core应用程序中…

280. Wiggle Sort

最后更新 二刷 这个题做得真蠢。上来想的复杂了&#xff0c;想的是quick sort之类的&#xff0c;然后一个一个交换。 实际上直接交换就行。。没啥特别的。 回头看一刷也是同样的思考过程 宿命论啊。。 Time: O(n) Space: O(1) public class Solution {public void wiggleSort(i…

避免人为灾难:盘点数据中心里十大愚蠢行为

对于企业运营&#xff0c;数据中心从设计、部署等各个环节都有极其严格的规范&#xff0c;保证简单的“题目”不出错也需要企业IT管理人员的智慧&#xff0c;在数据中心任何一个小错误往往会带来巨大灾难。数据中心从设计、部署、测试、运行、运维等各个环节都不能有任何的疏忽…

python中node.tag的用法_python在ui自动化中的一些常见用法

http://cn.python-requests.org/zh_CN/latest 可以查看requests库的说明&#xff0c;pprint(res.json(),width30)可以对请求的返回值按照json格式化形式进行打印。常见的content-type 有application/x-www-form-urlencoded、application/json、application/xml。自动化测试操作…

leetcode1039. 多边形三角剖分的最低得分(动态规划)

给定 N&#xff0c;想象一个凸 N 边多边形&#xff0c;其顶点按顺时针顺序依次标记为 A[0], A[i], …, A[N-1]。 假设您将多边形剖分为 N-2 个三角形。对于每个三角形&#xff0c;该三角形的值是顶点标记的乘积&#xff0c;三角剖分的分数是进行三角剖分后所有 N-2 个三角形的…

TRIZ解决问题方法

个人觉的成功是有规律的&#xff0c;那些成功的人士&#xff0c;都有一套处理事情的秘籍。只要我们的思维方式把那些秘籍融会贯通&#xff0c;并快速执行&#xff0c;我们有一天也会成功的。 TRIZ解决问题的5点方法。 1.确定最终目标。 2.列出阻碍因素 3.消除阻碍因素 4.可以利…

windows调用python_windows 快捷调用Python语言

本文主要向大家介绍了windows 快捷调用Python语言&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习Python语言有所帮助。场景1&#xff1a;某云平台的账号/或密码比较长&#xff0c;一旦浏览器缓存失效&#xff0c;就要去邮件/文件查找&#xff0c;费时费力场景…

《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html 《量化投资&#xff1a;以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB&#xff08;上&#xff09; 《量化投资&#xff1a;以MATLAB为工具》简介 《量化投资&#xff1a;以MATLAB为工具》是由电子工业出版社&#xff0…

android-开源项目_我如何摆脱对开源的恐惧,并开始了自己的项目-以及如何做到。...

android-开源项目by Linea Brink Andersen通过Linea Brink Andersen 我如何摆脱对开源的恐惧&#xff0c;并开始了自己的项目-以及如何做到。 (How I crushed my fear of open source and started my own project — and how you can, too.) A week ago, I started an Open So…

本题要求实现函数输出n行数字金字塔。_练习5-3 数字金字塔 (15分)

本题要求实现函数输出n行数字金字塔。函数接口定义&#xff1a;void pyramid( int n );其中n是用户传入的参数&#xff0c;为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。裁判测试程序样例&#xff1a;#include <stdio.…