1、题目

877. 石子游戏

2、题解

首先,一开始我觉得这道题目并不严谨。因为我大略感觉到先手选择的人就能赢得这个游戏,因为你总是可以在当前的选择中选择对自己有利的拿取方式,而后手只能在剩下的机会中选择。可是如果这道题并不限制于偶数堆这个限制的话,先手优势就不存在了(例:【1,100,1】)你怎么拿都是后手赢。所以,我们应该严谨的判断一下数组长度,如果是偶数,就直接返回TRUE,如果是奇数,就使用DP来做即可。
具体看代码。

3、代码

正常解法:

  class Solution {public boolean stoneGame(int[] piles) {int length=piles.length;//偶数直接TRUE,先手胜利;if(length%2==0){return true;}//奇数int[][] dp = new int[length][length];for (int i = 0; i < length; i++) {dp[i][i]=piles[i];}for(int i=length-1;i>=0;i--){for (int j = i+1; j <length; j++) {dp[i][j]=Math.max(piles[i]-dp[i+1][j],piles[j]-dp[i][j-1]);}}return dp[0][length-1]>0;}}

不考虑题目扩展的解法:

class Solution {public boolean stoneGame(int[] piles) {return true;}
}

4、执行结果

正常解法:
带了奇偶判断的写法:

直接使用dp的结果:

不考虑题目扩展的解法:

LeetCode 877. 石子游戏相关推荐

  1. leetcode —— 877. 石子游戏

    亚历克斯和李用几堆石子在做游戏.偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] . 游戏以谁手中的石子最多来决出胜负.石子的总数是奇数,所以没有平局. 亚历克斯和李轮流进行,亚历克斯先开始 ...

  2. leetcode 877. 石子游戏(dp)

    题目 亚历克斯和李用几堆石子在做游戏.偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] . 游戏以谁手中的石子最多来决出胜负.石子的总数是奇数,所以没有平局. 亚历克斯和李轮流进行,亚历克斯 ...

  3. 【Leetcode 877. 石子游戏】DP求解

    题面: 亚历克斯和李用几堆石子在做游戏.偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] . 游戏以谁手中的石子最多来决出胜负.石子的总数是奇数,所以没有平局. 亚历克斯和李轮流进行,亚历克 ...

  4. LeetCode 1690. 石子游戏 VII(博弈DP)

    文章目录 1. 题目 2. 解题 1. 题目 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 . 有 n 块石子排成一排.每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获 ...

  5. LeetCode 1686. 石子游戏 VI(贪心)

    文章目录 1. 题目 2. 解题 283 / 1660,前17% 681 / 6572,前10.4% 1. 题目 Alice 和 Bob 轮流玩一个游戏,Alice 先手. 一堆石子里总共有 n 个石 ...

  6. LeetCode 1406. 石子游戏 III(DP)

    1. 题目 Alice 和 Bob 用几堆石子在做游戏.几堆石子排成一行,每堆石子都对应一个得分,由数组 stoneValue 给出. Alice 和 Bob 轮流取石子,Alice 总是先开始.在每 ...

  7. LeetCode 1690.石子游戏VII

    LeetCode 1690.石子游戏VII 问题描述: 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 . 有 n 块石子排成一排.每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的 ...

  8. LeetCode 1140. 石子游戏 II(DP)*

    文章目录 1. 题目 2. 解题 1. 题目 亚历克斯和李继续他们的石子游戏.许多堆石子 排成一行,每堆都有正整数颗石子 piles[i].游戏以谁手中的石子最多来决出胜负. 亚历克斯和李轮流进行,亚 ...

  9. LeetCode 1140.石子游戏 II

    题目描述 爱丽丝和鲍勃继续他们的石子游戏.许多堆石子 排成一行,每堆都有正整数颗石子 piles[i].游戏以谁手中的石子最多来决出胜负. 爱丽丝和鲍勃轮流进行,爱丽丝先开始.最初,M = 1. 在每 ...

最新文章

  1. 产业AI实践中,如何有效提升图像识别精度、实现极小目标检测? | 百度AI公开课报名...
  2. 用Eclipse进行远程Debug代码
  3. 自动化测试之键盘操作和select操作
  4. 数据解析1:XML解析(3)
  5. 理查德·汉明和他的汉明码
  6. 论坛一大早白屏,无法访问
  7. 第2课 贝贝的图形(vhist)-2019-07-11《聪明人的游戏-提高篇》
  8. pythonunicode和str_python2 中 unicode 和 str 之间的转换及与python3 str 的区别
  9. 什么是平面设计?详细讲解平面设计
  10. 谷歌联网断网都可以玩的恐龙小游戏(内容有不死加速挂)
  11. 高中计算机课简单介绍,高中课程介绍
  12. 开热点给电脑消耗大吗_电脑连热点流量消耗大吗
  13. 2011端午节搞笑短信大全
  14. Struck Structured Output Tracking with Kernels阅读笔记
  15. 跟我StepByStep学FLEX教程------概述(原创)
  16. Teamview免费版连接超限解决办法
  17. h5+MUI移动APP和普通H5之间的区别有哪些?
  18. GD32F4xx系列CAN通信收发配置
  19. 如何在excel单词后面批量加固定文字?
  20. 陆奇最新演讲:如何成为一个优秀的工程师

热门文章

  1. 如何彻底删除91助手
  2. 删除鼠标右键灰色skydrive pro
  3. 最新款服务器主板,技嘉发布多款Xeon Scalable服务器与主板新品
  4. 基于html5的视频点播,基于HTML5的视频播控和客户服务系统
  5. Python 吃饭没人付钱??/ 怎么可能 一个小游戏决定 刺激开心
  6. 《深入理解Windows操作系统》笔记2
  7. 学习用echarts画平行坐标系图
  8. SpringBoot教程(二)|SpringBoot项目配置数据库
  9. 【网络设备】switch vlan划分详细步骤
  10. C语言 求两个矩阵相乘