当前位置: 首页 > news >正文

矩阵中的最大得分(Lc3148)——动态规划

给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。

你可以从 任一 单元格开始,并且必须至少移动一次。

返回你能得到的 最大 总得分。

示例 1:

输入:grid = [[9,5,7,3],[8,9,6,1],[6,7,14,3],[2,5,3,1]]

输出:9

解释:从单元格 (0, 1) 开始,并执行以下移动:
- 从单元格 (0, 1) 移动到 (2, 1),得分为 7 - 5 = 2 。
- 从单元格 (2, 1) 移动到 (2, 2),得分为 14 - 7 = 7 。
总得分为 2 + 7 = 9 。

示例 2:

输入:grid = [[4,3,2],[3,2,1]]

输出:-1

解释:从单元格 (0, 0) 开始,执行一次移动:从 (0, 0) 到 (0, 1) 。得分为 3 - 4 = -1 。

提示:

  • m == grid.length
  • n == grid[i].length
  • 2 <= m, n <= 1000
  • 4 <= m * n <= 105
  • 1 <= grid[i][j] <= 105

问题简要描述:返回最大总得分

细节阐述:

  1. f[i][j] 表示以 (i,j) 为终点的路径的最小值

Java

class Solution {public int maxScore(List<List<Integer>> grid) {int m = grid.size(), n = grid.get(0).size();int[][] f = new int[m + 1][n + 1];int inf = 1 << 30, ans = -inf;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {int min = inf;if (i > 0) {min = Math.min(min, f[i - 1][j]);}if (j > 0) {min = Math.min(min, f[i][j - 1]);}ans = Math.max(ans, grid.get(i).get(j) - min);f[i][j] = Math.min(grid.get(i).get(j), min);}}return ans;}
}

 Python3

class Solution:def maxScore(self, grid: List[List[int]]) -> int:f = [[0] * len(grid[0]) for _ in range(len(grid))]ans = -inffor i, row in enumerate(grid):for j, x in enumerate(row):mi = infif i:mi = min(mi, f[i - 1][j])if j:mi = min(mi, f[i][j - 1])ans = max(ans, grid[i][j] - mi)f[i][j] = min(grid[i][j], mi)return ans

TypeScript

function maxScore(grid: number[][]): number {const [m, n] = [grid.length, grid[0].length];const f = Array.from({length: m}, () => Array.from({length: n}, () => 0));let ans = -Infinity;for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {let min = Infinity;if (i > 0) {min = Math.min(min, f[i - 1][j]);}if (j > 0) {min = Math.min(min, f[i][j - 1]);}ans = Math.max(ans, grid[i][j] - min);f[i][j] = Math.min(grid[i][j], min);}}return ans;    
};

C++

class Solution {
public:int maxScore(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size();int f[m][n];int inf = 1 << 30, ans = -inf;for (int i = 0;i < m;i++) {for (int j = 0;j < n;j++) {int mi = inf;if (i > 0) {mi = min(mi, f[i - 1][j]);}if (j > 0) {mi = min(mi, f[i][j - 1]);}ans = max(ans, grid[i][j] - mi);f[i][j] = min(grid[i][j], mi);}}return ans;        }
};

Go

func maxScore(grid [][]int) int {m, n := len(grid), len(grid[0])f := make([][]int, m)for i := range f {f[i] = make([]int, n)}const inf int = 1 << 30ans := -inffor i, row := range grid {for j, x := range row {mi := infif i > 0 {mi = min(mi, f[i-1][j])}if j > 0 {mi = min(mi, f[i][j-1])}ans = max(ans, x-mi)f[i][j] = min(x, mi)}}return ans
}

相关文章:

矩阵中的最大得分(Lc3148)——动态规划

给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格&#xff08;不必相邻&#xff09;。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始&#xff0c;并且必须…...

C++ 设计模式(4. 建造者模式)

建造者模式&#xff08;也被成为生成器模式&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;而建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步骤定义一个抽象的接口。具体的构建…...

Arbitrum 和 Optimism Layer 2 扩展方案对比

Arbitrum 和 Optimism 对比分析 Arbitrum 和 Optimism 是两个以太坊 Layer 2 扩展方案&#xff0c;它们都使用了 Optimistic Rollup 技术来提升以太坊的可扩展性并降低交易成本。虽然它们有着相似的目标&#xff0c;但在架构设计、性能表现和费用结构上各有特点。 一、架构与…...

热门的蓝牙耳机中,哪种类型更受欢迎?四款热度高的开放式耳机

在如今的耳机市场中&#xff0c;开放式耳机异军突起&#xff0c;成为了众多消费者的新宠。如果你还在为传统入耳式耳机带来的不适而烦恼&#xff0c;那么开放式耳机绝对值得你一试。它不仅能让你在享受音乐的同时&#xff0c;依然可以清晰感知周围环境&#xff0c;保障你的安全…...

基于web的亚热带常见自然林病虫害识别系统——总结与展望

文章目录 一、前言二、总结三、展望参考文献致谢一、前言 这个系列也迎来了结尾,最后说一些碎碎念… 二、总结 本文首先简要介绍了卷积神经网络的基本原理,以及在亚热带常见自然林植物识别领域的研究应用现状。 其重点研究了卷积神经网络在亚热带常见自然林植物叶片病害识…...

其他自动重试的注解

除了 Retryable 注解之外&#xff0c;Spring 提供了其他注解用于自动重试方法&#xff0c;主要包括以下几个注解&#xff1a; 1. Recover Recover 注解用于定义重试次数耗尽后执行的恢复方法。当 Retryable 注解的重试次数达到上限时&#xff0c;Recover 方法会被调用。这通常…...

宠物空气净化器哪款能吸毛?希喂、米家宠物空气净化器测评分享

养猫最令人困扰的&#xff0c;就是掉毛与难以彻底消除的异味&#xff0c;这两个问题就成了养猫生活中的一大挑战。每当换季或是猫咪自我梳理时&#xff0c;家中便被一层细腻的绒毛覆盖&#xff0c;从地板到沙发&#xff0c;从床单到衣物&#xff0c;甚至是空气中都漂浮着细小的…...

讲清前端开发(入门)

前端开发&#xff1a;创建用户在网页或应用程序中直接与之交互的部分。 简单来说&#xff0c;就是负责打造用户在使用网站、网页应用或者移动应用时直接看到和与之交互的部分。打个比方&#xff0c;前端开发就像是给房子做装修。房子的框架结构已经有了&#xff0c;但是需要有…...

深入理解MySQL索引:原理、数据结构与优化策略

深入理解MySQL索引&#xff1a;原理、数据结构与优化策略 MySQL 是当今最流行的开源关系型数据库管理系统之一&#xff0c;其强大的性能与灵活的可扩展性使得它广泛应用于各种规模的应用程序中。在数据库的日常操作中&#xff0c;索引起着至关重要的作用&#xff0c;能够极大地…...

mysql数据库基础使用

1、登录mysql ① 本地登录 mysql -u 用户名 -p ②远程登入 mysql -h ip主机地址 -P 端口号 -u 用户名 -p 回车输入密码即可. 2、关于用户操作 ①创建用户 % 代表所有ip都可以访问&#xff0c;可指定主机ip create user 用户名% identified by 密码; ②修改密码 alte…...

GATK AlleleList接口介绍

在 GATK(Genome Analysis Toolkit)中,AlleleList 接口是一个用来表示等位基因(alleles)列表的接口。Allele 是遗传学中用于表示某一特定基因座的不同形式的一个基本单位。AlleleList 接口定义了一些操作,使得处理和访问一组等位基因更加方便。 AlleleList 的实现类和继承…...

直播App遭受抓包后的DDoS与CC攻击防御策略

随着直播应用的普及&#xff0c;越来越多的用户开始依赖这些平台进行娱乐和社交活动。然而&#xff0c;这也使得直播平台成为网络攻击的目标之一。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击和CC&#xff08;Challenge Collapsar&#xff0c;即HTTP慢速攻…...

【xilinx】 AXI Quad SPI IP - 如果 s_axi_wstrb 不等于 0xf,则寄存器可能无法正确更新

PG153 (v3.2) 规定如下&#xff1a; “AXI4-Lite 写访问寄存器由 32 位 AXI 写数据 (* _wdata ) 信号更新&#xff0c;并且不受 AXI 写数据选通 (* _wstrb ) 信号的影响。” "The AXI4-Lite write access register is updated by the 32-bit AXI Write Data (* _wdata ) s…...

【EPLAN】P8 2.9 使用不了ePLUSE

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决 EPLAN P8 2.9 使用不了ePLUSE问题 2、 问题场景 客户反应 EPLAN P8 2.9 版本打开后使用不了 ePLUSE 功能&#xff0c;如图 1 所示 EPLAN ePLUSE 界面为空白状态&#xff0c;无法使用。 图 1 3、软硬件环境 …...

页面设计任务 个人简介页面

目录 任务要求 任务讲解 源码: 详细讲解 html部分 CSS部分 任务要求 页面结构: 创建一个基本的 HTML 页面&#xff0c;页面标题为“我的个人简介”。页面内容分为以下四个部分&#xff1a; 顶部导航栏: 包含至少三个导航链接&#xff0c;例如&#xff1a;“主页”、“关于…...

机械学习—零基础学习日志(如何理解概率论3)

随机变量的函数分布 一维随机变量分布&#xff0c;可以看到下图&#xff0c;X为不同情况的概率。而x如果是大于等于X&#xff0c;那么当x在40以内时&#xff0c;没有概率&#xff0c;为0。 当x变大&#xff0c;在40-80之间&#xff0c;那么x大于X的概率为&#xff0c;0.7&…...

YOLOv8添加SE注意力机制有效提升检测精度(已跑通)

SE注意力机制概念 SSqueeze-and-Excitation (SE) 注意力机制是一种专注于增强网络模型对不同特征通道的重要性理解的机制。它通过对通道维度上的特征进行动态调整&#xff0c;增强了网络对重要特征的敏感性。 源码 import numpy as np import torch from torch import nn fro…...

【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第三十二章 音频FFT实验 本章将介绍CanMV下FFT的应用&#xff0c;通过将时域采集到的音频数据通过FFT为频域。通过本章的学习&#xff0c;读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节&#xff1a; 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…...

Android Studio修改默认.m2与Gradle user home缓存位置

Android Studio修改默认.m2与Gradle user home缓存位置 1、修改Gradle user home的方法&#xff1a; android studio配置默认.gradle路径_android studio gradle在哪-CSDN博客文章浏览阅读2k次。当android studio新建一个项目时候&#xff0c;默认的.gradle路径均认为是在c盘的…...

BFS解决单源最短路问题

目录 迷宫中离入口最近的出口 最小基因变化 单词接龙 为高尔夫比赛砍树 迷宫中离入口最近的出口 题目 思路 使用宽度优先遍历解决这道题&#xff0c;需要一个二维数组标记是否被遍历过&#xff0c;也需要一个队列辅助完成宽度优先遍历&#xff0c;类似于水波纹一样&#x…...

Linux运维、Windows运维常用命令,保存起来当手册用

文章目录 一、centos基本命令1、升级内核到最新版本2、文件句柄数限制优化3、ssh、sftp、scp等远程命令4、find文件查找5、vi命令 二、windows常用操作 一、centos基本命令 1、升级内核到最新版本 # 1、查看内核版本 [rootlocalhost ~]# cat /etc/centos-release CentOS Linu…...

FTP协议-匿名用户登录 从0到1

前言 日常大家可能接触web漏洞比较多而对其他端口及协议不那么了解&#xff0c;其实其他协议漏洞在渗透中也同样重要只是平时可能接触得不多。本文将介绍FTP协议、FTP匿名用户登录及其具体流程分析和自动化利用demo。 FTP简介 FTP是File Transfer Protocol&#xff08;文件传…...

【UltraVNC】私有远程工具VNC机器部署方式

旨在解决监控端非固定IP的计算机A,远程连接受控端非固定IP的计算机B。如果没有独立公网IP,是不能直接远程桌面的,所以需要一个服务器来中转双方的数据。 一、UltraVNC下载和安装 ----------免费开源远程控制工具——UltraVNC 官网:Home - UltraVNC VNC OFFICIAL SITE, R…...

五大无线领夹麦克风误区科普:领夹麦杂音干扰不耐用问题必须规避

在选购无线领夹麦克风的道路上&#xff0c;不少新手因经验不足&#xff0c;容易落入性能低下的产品陷阱。这些麦克风不仅信号不稳定&#xff0c;音质差强人意&#xff0c;甚至在使用一段时间后出现信号衰减、杂音加重等现象。这并非偶然&#xff0c;而是市场中充斥着大量品质参…...

适合金融行业的企业级跨网文件交换系统

在金融领域&#xff0c;文件交换平台的作用不可小觑&#xff0c;它关乎数据的保密性、稳定性&#xff0c;并且必须遵守严格的合规标准。那么&#xff0c;一个适合金融业跨网文件交换的系统应该具备哪些特质&#xff0c;又是如何满足这些需求的呢&#xff1f;镭速跨网文件交换系…...

vba发邮件的几种方法:新人如何快速上手?

vba发邮件的几种方法有哪些&#xff01;vba自动化邮件发送技巧&#xff01; 对于新人来说&#xff0c;快速掌握VBA发邮件的几种方法&#xff0c;不仅可以节省大量时间&#xff0c;还能提高工作质量。AokSend将详细介绍几种常见的VBA发邮件的方法&#xff0c;帮助新人快速上手&…...

豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!

在众多解释型语言中&#xff0c;Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来&#xff0c;在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来&#xff0c;由于Python有不断改良的库(主要是pandas)&#xff0c;使其成为数据处理任…...

关于linux上root连接mysql时遇到的一点小问题以及rsync通过ssh的文件同步传输以及免密码传输的实现

一、关于linux上root连接mysql时遇到的一点小问题 今天因为工作需要&#xff0c;需要使用root连接一下很久没有连接过的mysql服务器了&#xff0c;一看找不到root密码了&#xff0c;记得当时我在搭建整个mysql主从的时候&#xff0c;我明明把root密码记录在了txt文件上的&#…...

一、Socket介绍(也叫套接字)

一、定义 通过IP地址或者端口 将两个电脑连接起来&#xff1b; Socket是网络通信最常用的&#xff0c;除了这个还有HTTP&#xff1b; Http是一个弱联网&#xff1b;Socket用于长连接&#xff0c;使用的是Tcp&#xff1b; 除了这个还有一个SuperSocket&#xff0c;是对Socket…...

虚拟现实技术的发展现状如何?

虚拟现实&#xff08;VR&#xff09;技术自2016年被广泛认为是元年之后&#xff0c;经历了快速增长和随后的调整期。目前&#xff0c;VR行业正处于快速发展期&#xff0c;技术不断进步&#xff0c;应用场景持续拓展。2024年VR技术发展现状概述&#xff1a; 1、行业发展阶段&am…...

专业的移动网站建设公司价格/南宁seo结算

描述lcd1602显示程序代码前些天弄了最小系统板后就想着学习1602的显示程序&#xff0c;可惜坛子里的或网上的&#xff0c;都没有简单的1602显示程序&#xff0c;无柰在网上下载了一段经过反复修改测试&#xff0c;终于有了下面一段代码&#xff1a;// - - - - - - - - - - - - …...

网络服务器配置设计/seo优化在线诊断

一、LVS-NAT模式的组成LVS-NAT模式的实现&#xff0c;其主要依赖于 LVS调度器&#xff0c;即 Director Server&#xff0c;由上图可以看出&#xff0c;整个调度器&#xff0c;则由两部分构成&#xff1a;用户空间和内核空间。1、内核空间&#xff0c;指的是&#xff0c;在负载均…...

聊城网站制作公司电话/苏州seo怎么做

1.重载操作符返回*this 2.返回类成员变量的引用&#xff0c;最好加const&#xff0c;不破坏类成员的封装性 如下&#xff1a;复制于 C 中引用有什么用&#xff1f; - 谢之易的回答 - 知乎 https://www.zhihu.com/question/34267829/answer/58414818 转载于:https://www.cnblogs…...

网站建设维护培训会上的讲话/seo网站排名优化工具

LoggerFactory.getLogger可以在IDE控制台打印日志&#xff0c;便于开发&#xff0c;一般加在最上面&#xff1a; 使用&#xff1a; //调试日志private final static Logger logger LoggerFactory.getLogger(xxxController.class);优点&#xff1a;使用指定类初始化日志对象&…...

学校网站资源建设方案/一站式软文发布推广平台

肢体语言&#xff08;body language&#xff09;又称身体语言&#xff0c;是指通过头、眼、颈、手、肘、臂、身、胯、足等人体部位的协调活动来传达人物的思想&#xff0c;形象地借以表情达意的一种沟通方式。肢体语言也是演员的必修课程&#xff0c;不同角色不同情况下的肢体语…...

怎么选择宜昌网站建设/网站注册账号

Normalize.css是一种CSS reset的替代方案 介绍&#xff1a;https://jerryzou.com/posts/aboutNormalizeCss/ 1、npm使用 npm install normalize.css2、浏览器使用 下载地址&#xff1a;http://necolas.github.io/normalize.css/ /*! normalize.css v8.0.1 | MIT License |…...