Leetcode.2017 网格游戏

news2025/1/17 1:04:10

题目链接

Leetcode.2017 网格游戏 Rating : 1719

题目描述

给你一个下标从 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 个点。

提示:

  • g r i d . l e n g t h = = 2 grid.length == 2 grid.length==2
  • n = = g r i d [ r ] . l e n g t h n == grid[r].length n==grid[r].length
  • 1 < = n < = 5 ∗ 1 0 4 1 <= n <= 5 * 10^4 1<=n<=5104
  • 1 < = g r i d [ r ] [ c ] < = 1 0 5 1 <= grid[r][c] <= 10^5 1<=grid[r][c]<=105

分析:

在这里插入图片描述
红色的是第一个机器人走过的路径。

因为机器人只能 向右 或者 向下 走,所以第二个机器人就只能选择走两段蓝色的路径其中的一段。

所以第二个机器人就选择 两段蓝色路径和最大的那段。第一个机器人就是让这个 较大的蓝色段的路径和最小

我们定义前缀和 s

  • s ( 0 , i ) s(0,i) s(0,i)代表第一行,前 i个元素的和
  • s ( 1 , i ) s(1,i) s(1,i)代表第二行,前 i个元素的和

所以我们只需要遍历一次,不断更新答案 ansans = min ( ans , max( s[0][n] - s[0][i] , s[1][i-1] ) )

时间复杂度: O ( n ) O(n) O(n)

C++代码:

using LL = long long;
class Solution {
public:
    long long gridGame(vector<vector<int>>& grid) {
        int n = grid[0].size();
        LL s[2][n+1];
        memset(s,0,sizeof s);

        for(int i = 1;i <= n;i++){
            s[0][i] = s[0][i-1] + grid[0][i-1];
            s[1][i] = s[1][i-1] + grid[1][i-1];
        }

        LL ans = 1e18;

        for(int i = 1;i <= n;i++){
            ans = min(ans,max(s[0][n] - s[0][i] , s[1][i-1]) );
        }

        return ans;
    }
};

Java代码:

class Solution {
    public long gridGame(int[][] grid) {
        int n = grid[0].length;

        long[][] s = new long[2][n+1];

        for(int i = 1;i <= n;i++){
            s[0][i] = s[0][i-1] + grid[0][i-1];
            s[1][i] = s[1][i-1] + grid[1][i-1];
        }

        long ans = Long.MAX_VALUE;

        for(int i = 1;i <= n;i++){
            ans = Math.min(ans,Math.max(s[0][n] - s[0][i] , s[1][i-1]) );
        }

        return ans;
    }
}

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

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

相关文章

带你看懂RuoYi动态数据源切换

文章目录数据源是什么一、spring中是如何处理各种数据源的&#xff1f;1.开搞springboot2.创建一个测试类二、有了如上的理论,那么想想动态切换数据源吧参考若依的动态数据源配置总结数据源是什么 数据源,对于java来说,就是可用的数据库,那么我平时开发的springboot springclo…

算机网络安全基础知识5:sql注入漏洞攻击,DVWA演示sql注入漏洞,如何利用sql注入查看数据库信息,sqlmap,sql注入漏洞的防御

算机网络安全基础知识5:sql注入漏洞攻击&#xff0c;DVWA演示sql注入漏洞&#xff0c;如何利用sql注入查看数据库信息&#xff0c;sqlmap&#xff0c;sql注入漏洞的防御 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能…

Unity/C#------委托与事件(一篇文章彻底搞懂...)

一&#xff1a;委托 所有的代码语言创造者母语都是英语&#xff0c;我们从英语翻译到中文的过程中难免会存在一些不太能还原本意的词&#xff0c;比如我之前一直不理解构造函数和析构函数&#xff0c;只知道这俩货作用相反&#xff0c;直到我看到了它的英文意思&#xff0c;Con…

spring重点整理篇--springMVC(嘿嘿,开心哟)

Spring MVC是的基于JavaWeb的MVC框架&#xff0c;是Spring框架中的一个组成部分(WEB模块) MVC设计模式&#xff1a; Controller&#xff08;控制器&#xff09; Model&#xff08;模型&#xff09; View&#xff08;视图&#xff09; 重点来了&#x1f604; SpringMVC的工作机制…

Nginx+Tomcat实现负载均衡、动静分离(脚本方法)

一、Nginx 负载均衡实现原理1、Nginx 实现负载均衡是通过反向代理实现反向代理&#xff08;Reverse Proxy&#xff09; 是指以 代理服务器&#xff08;例&#xff1a;Nginx&#xff09; 来接受 internet 上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0…

【PGMAN:无监督的生成式多对抗网络】

PGMAN: An Unsupervised Generative Multiadversarial Network for Pansharpening &#xff08;PGMAN&#xff1a;一种无监督的生成式多对抗网络&#xff09; 全色锐化的目的是融合低分辨率多光谱&#xff08;MS&#xff09;图像和由卫星获取的高分辨率全色&#xff08;PAN&a…

OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

OnlyOffice验证&#xff08;三&#xff09;OnlyOffice编译结果自制Docker镜像 之前验证了OnlyOffice验证&#xff08;二&#xff09;在Centos7上部署OnlyOffice编译结果&#xff0c;由于现在普遍都是容器化部署&#xff0c;所以还是验证下Doker镜像打包是否可行&#xff0c;因为…

渗透five86-2

kali的ip为192.168.56.104&#xff0c;利用nmap或arp-scan -l查看发现了靶机ip192.168.56.120这里存在20、21、80端口&#xff0c;这边需要将靶机ip进行域名绑定&#xff0c;对/etc/hosts改写&#xff0c;将192.168.56.120 与five86-2绑定输入ip后&#xff0c;发现了有log in由…

Kubernetes的网络架构及其安全风险

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129137821 一、常见的Kubernetes网络架构 如图所示&#xff1a; 说明&#xff1a; 1、集群由多个节点组成。 2、每个节点上运行若干个Pod。 3、每个节点上会创建一个CNI网桥&#xff08;默认设备名称…

Qt——自定义界面之QStyle

1. Qt控件结构简介 首先我们要来讲讲GUI控件结构&#xff0c;这里以QComboBox为例&#xff1a; 一个完整的控件由一种或多种GUI元素构成&#xff1a; Complex Control Element。Primitive Element。Control Element。 1.1 Complex Control Element Complex control elements …

【C语言跬步】——指针数组和数组指针(指针进阶)

一.指针数组和数组指针的区别 1.指针数组是数组&#xff0c;是一种存放指针的数组&#xff1b; 例如&#xff1a; int* arr[10]; 2.数组指针是指针&#xff0c;是一种指向数组的指针&#xff0c;存放的是数组的地址&#xff1b; 例如&#xff1a; int arr[5]; int (p)[5]&a…

Redis学习(二):Redis安装测试

概述 Redis是什么 Redis, Remote Dictionary Server, 即远程字典服务。免费开源的数据库。 由C语言编写&#xff0c;支持网络&#xff0c;可基于内存亦可持久化的日志型、KV数据库&#xff0c;并提供所种语言的API。 Redis能干嘛 用于内存存储&#xff0c;持久化。rdb、ao…

[学习笔记]黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通,基于Python语言的spark教程

文章目录视频资料&#xff1a;一、Spark基础入门&#xff08;环境搭建、入门概念&#xff09;第二章&#xff1a;Spark环境搭建-Local2.1 课程服务器环境2.2 Local模式基本原理2.3 安装包下载2.4 Spark Local模式部署第三章&#xff1a;Spark环境搭建-StandAlone3.1 StandAlone…

驾考笔记_2023

科目一1> 扣分制度1.1> 超速1.2> 超载1.3> 车牌1.4> 速记口诀2> 满分学习2.1> 消分学习2.2> 满分重考&#xff1b;3> 罚款制度3.1> 考证3.2> 审验教育3.3> 其他4> 车速规定4.1> 高速_最低限速4.2> 普路_最高限速5> 证件相关5.…

双指针法|位运算|离散化|区间合并

目录 双指针算法 位运算 离散化 序列合并 双指针算法 题目描述&#xff1a;1.输入n个单词&#xff0c;每个单词在输入的时候按空格隔开&#xff0c;之后打印出每个单词且换行 #include<iostream> #include <string>using namespace std; int main() {strin…

计算机网络中的原码、反码、补码

写在前面 原码、反码、补码是计算机组成原理中的概念&#xff0c;是计算机网络的基础知识之一。这些概念是为了处理二进制数的符号位而引入的&#xff0c;常用于计算机中的整数运算&#xff0c;也常用于数据存储和传输等领域。因此&#xff0c;了解和掌握这些概念对于理解计算机…

软测入门(五)接口测试Postman

Postman 一款Http接口收工测试工具。如果做自动化测试会使用jemter做。 安装 去官网下载即可。 https://www.postman.com/downloads/?utm_sourcepostman-home 功能介绍 页面上的单词基本上都能了解&#xff0c;不多介绍。 转代码&注释 可将接口的访问转为其他语言的…

一款小巧、开源免费、可观性强的流量监控软件——TrafficMonitor

名人说&#xff1a;君子生非异也&#xff0c;善假于物也。——荀子 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了这篇博客&#xff0c;跟着步骤一步步尝试安装吧。✧ 目录背景缘由一、…

自动驾驶目标检测项目实战(一)—基于深度学习框架yolov的交通标志检测

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测 目前目标检测算法有很多&#xff0c;流行的就有faster-rnn和yolov&#xff0c;本文使用了几年前的yolov3框架进行训练&#xff0c;效果还是很好&#xff0c;当然也可以使用更高版本的Yolov进行实战。本代码使…

分布式事务之TCC与SAGA

分布式事务之TCC与SAGA 在《关于分布式事务的理解》&#xff0c;介绍了可靠消息队列的实现原理&#xff0c;虽然它也能保证最终的结果是相对可靠的&#xff0c;过程也足够简单&#xff08;相对于 TCC 来说&#xff09;&#xff0c;但现在你已经知道&#xff0c;可靠消息队列的…