文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数。
现在有两个机器人正在矩阵上参与一场游戏。

两个机器人初始位置都是 (0, 0) ,目标位置是 (1, n-1) 。
每个机器人只会 向右 ((r, c) 到 (r, c + 1)) 或 向下 ((r, c) 到 (r + 1, c)) 。

游戏开始,第一个 机器人从 (0, 0) 移动到 (1, n-1) ,并收集路径上单元格的全部点数。
对于路径上所有单元格 (r, c) ,途经后 grid[r][c] 会重置为 0 。
然后,第二个 机器人从 (0, 0) 移动到 (1, n-1) ,同样收集路径上单元的全部点数。
注意,它们的路径可能会存在相交的部分。

第一个 机器人想要打击竞争对手,使 第二个 机器人收集到的点数 最小化
与此相对,第二个 机器人想要 最大化 自己收集到的点数。两个机器人都发挥出自己的 最佳水平 的前提下,返回 第二个 机器人收集到的 点数 。

示例 1:

输入:grid = [[2,5,4],[1,5,1]]
输出:4
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 0 + 4 + 0 = 4 个点。

示例 2:

输入:grid = [[3,3,1],[8,5,2]]
输出:4
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 3 + 1 + 0 = 4 个点。

示例 3:

输入:grid = [[1,3,1,15],[1,3,3,1]]
输出:7
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 1 + 3 + 3 + 0 = 7 个点。
提示:
grid.length == 2
n == grid[r].length
1 <= n <= 5 * 10^4
1 <= grid[r][c] <= 10^5

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/grid-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 选手1不论如何走,选手2只能拿到两种蓝色中的最大的一段
  • 选手1要选择上面的情况中最小的值给选手2取到
class Solution {public:long long gridGame(vector<vector<int>>& grid) {int n = grid[0].size();vector<vector<long long>> dp(2, vector<long long>(n, 0));for(int j = 0; j < n; ++j){dp[0][j] = (j>0? dp[0][j-1] : 0) + grid[0][j];dp[1][j] = (j>0? dp[1][j-1] : 0) + grid[1][j];} // 前缀和long long ans = LONG_LONG_MAX;for(int i = 0; i < n; ++i){ans = min(ans, max(dp[0][n-1]-dp[0][i], i>0?dp[1][i-1]:0));}                    // 第一行末段,          第二行前段, 两段取最大的拿// 所有情况中,选择最小的给2号选手return ans;}
};

140 ms 73.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2017. 网格游戏(前缀和)相关推荐

  1. 2017. 网格游戏

    2017. 网格游戏 给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数.现在有两个机器人正在矩阵上参与一场游 ...

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

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

  3. LeetCode 174.地下城游戏

    LeetCode 174.地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城 ...

  4. LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)

    LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...

  5. LeetCode:跳跃游戏【55】

    LeetCode:跳跃游戏[55] 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个位置. 示例 1: 输入: ...

  6. C++ Opengl 线,网格游戏源码

    C++ Opengl 线,网格游戏源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1, ...

  7. LeetCode 1871. 跳跃游戏 VII(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump . 一开始,你在下标 0 处,且该位置的值一定为 '0' . ...

  8. LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)

    文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...

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

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

最新文章

  1. R语言:预测算法常用包总结
  2. 每天一道LeetCode-----两个有序数组合并后的第K个数
  3. Web 高效开发必备的 PHP 框架
  4. python gevent asyncio_python用from gevent import monkey; monkey.patch_all()之后报ssl等错误
  5. Python文件练习
  6. puppet之用户管理
  7. 阿里云数据库HybridDB for PostgreSQL使用教程
  8. mysql数据库rpm包安装_Linux rpm包安装MySQL数据库问题总结
  9. 基于java的汽车租赁管理系统的设计与实现(含源文件)
  10. php语言简述_PHP语言的简介
  11. 【32】FPGA和ASIC:计算机体系结构的黄金时代
  12. notepad打开java乱码_notepad打开中文乱码
  13. 菜鸟IT技术杂谈(一)——从多任务系统原理说起
  14. LeetCode 第 194 场周赛
  15. 三星 linux手机系统版本,三星手机将支持完整版 Linux
  16. win10设置开机启动项_华硕主板如何设置开机第一启动项方法大全
  17. android studio报错Error:Project with path 'XXXX' could not be found解决办法
  18. Swoole入门到实战
  19. 2019中山纪念中学夏令营-Day21[JZOJ]
  20. linux的免费虚拟机,Win10下的Linux+非虚拟机+非双系统+可靠教程+免费

热门文章

  1. java 空接口_学Java,java接口搞明白了吗?大牛让你一文搞清楚
  2. 基于dreamweaver软件设计和开发一网站_基于 abp vNext 和 .NET Core 开发博客项目 Blazor 实战系列(一)...
  3. loading gif 透明_搞笑GIF:有这样的女朋友下班哪里都不想去
  4. android按钮响应事件吗,Android 按钮响应事件的几种方式
  5. python 单例模式的四种实现方法
  6. C语言变量的类型和存储位置
  7. 逆水寒7月19服务器维护,逆水寒7月19日更新维护公告 更新内容汇总
  8. 嵌入式基础认识2:shell脚本的一些简单语法规则
  9. 字符设备驱动高级篇1——新接口介绍
  10. swift中为什么要创造出可选型?