LeetCode-3148. 矩阵中的最大得分

news2024/9/23 1:32:39

        本人算法萌新,为秋招找工作开始磨炼算法,算法题均用python实现,如果我有哪些地方做的有问题的,还请大家不吝赐教.

1.题干

给你一个由 正整数 组成、大小为 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

2.思考

        想了半天,最后只想到复杂度很高的暴力解法.QAQ

3.代码

import math
from typing import List


class Solution:
    def maxScore(self, grid: List[List[int]]) -> int:
        m = len(grid)
        n = len(grid[0])
        dp = [[0 for _ in range(n)] for _ in range(m)]
        mmin = -math.inf
        isb = False
        for i in range(m):
            for j in range(n):
                if i == 0 and j == 0:
                    continue
                if i == 0:
                    x_min = min(grid[i][:j])
                    dp[i][j] = grid[i][j] - x_min
                elif j == 0:
                    y_min = min(row[j] for row in grid[:i])
                    dp[i][j] = grid[i][j] - y_min
                else:
                    x_min = min(grid[i][:j])
                    y_min = min(row[j] for row in grid[:i])
                    dp[i][j] = max(grid[i][j] - x_min, grid[i][j] - y_min)
                if dp[i][j] < 0:
                    mmin = max(mmin, dp[i][j])
                    dp[i][j] = 0
                elif dp[i][j] >= 0:
                    isb = True
                    grid[i][j] -= dp[i][j]
        ans = 0
        for i in range(m):
            for j in range(n):
                if dp[i][j] > ans:
                    ans = dp[i][j]
        if ans == 0 and not isb:
            return mmin
        else:
            return ans


if __name__ == "__main__":
    solution = Solution()
    grid = [[4, 3, 2], [3, 2, 1]]
    print(solution.maxScore(grid))

4.总结

        题解也看得不是很懂,继续加油吧

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

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

相关文章

小程序实现设备消息订阅

小程序实现设备消息订阅 一、说明 先说明一下什么是小程序的消息订阅&#xff0c;其实就是在小程序进行某个消息的订阅&#xff0c;订阅以后就可以在微信收到推送的消息了。推送走的服务端&#xff0c;在服务端调用微信的推送接口&#xff0c;然后推送至指定的微信用户。 二…

xlua热补丁

print("*********第一个热补丁***********")--直接写好代码 运行 是会报错的 --我们必须做4个非常重要的操作 --1.加特性 --2.加宏 第一次开发热补丁需要加 --3.生成代码 --4.hotfix 注入 --注入时可能报错 提示你要引入Tools--热补丁的缺点&#xff1a;只要我们修改…

无人值守变电站视频监控统一接入系统方案

目录 一、背景介绍 1、无人值守变电站 2、特点 二、需求分析 1、基本需求 2、需求分析 三、目标和网络 1、设计目标 2、系统网络建设目标 四、系统组成 1、总体架构图 2、前端采集层 &#xff08;1&#xff09;摄像头 &#xff08;2&#xff09;传感器 &#xf…

Qt——多线程

一、QThread类 如果要设计多线程程序&#xff0c;一般是从QThread继承定义一个线程类&#xff0c;并重新定义QThread的虚函数 run() &#xff0c;在函数 run() 里处理线程的事件循环。 应用程序的线程称为主线程&#xff0c;创建的其他线程称为工作线程。主线程的 start() 函数…

猫头虎 分享已解决Bug || Failed to start docker.service: Unit not found. 解决方案

猫头虎 分享已解决Bug || Failed to start docker.service: Unit not found. 解决方案 今天猫头虎带您解决一个在运维工作中常见的问题&#xff1a; Failed to start docker.service: Unit not found.。这是一个困扰了许多运维小伙伴的问题&#xff0c;尤其是在部署Docker时&a…

安全测试担心效果不好?这3个安全测试工具你用了吗?

其实在信息科技发展的初期&#xff0c;很多互联网公司就有意识到保护软件产品安全的重要性。但时至今日&#xff0c;我们还是经常能看到某某app软件泄露用户隐私信息&#xff0c;或遭受黑客攻击导致一些损失&#xff0c;其中不乏有一定市场地位的大厂。此类信息安全问题屡见不鲜…

元素设置了sticky粘性布局后,关于滚动后怎么样让这个元素自动添加阴影,我用自定义指令实现

前言 在写h5或者pc站的时候&#xff0c;顶部总会固定一些东西。然后我们会设置顶部的容器为粘性布局固定在顶部。但滚动之后会很僵硬。例如下面这样&#xff1a; 我们看看element的表格的效果&#xff1a; 再来看看最后我们实现的效果&#xff1a; 其实网上也有纯css实现…

简单创建代理工厂

简单创建代理工厂 一般对于JDBC来说&#xff0c;无非就是连接数据库、查询数据库、封装实体、返回实体&#xff0c;如果要设计一个ORM框架的话也就是要考虑怎么把用户自定义的数据库操作接口、XML中的SQL语句、数据库三者给联系起来&#xff0c;其实最适合的操作就是代理&…

2766:最大子矩阵

网址如下&#xff1a; OpenJudge - 2766:最大子矩阵 用dp来做就行了 代码如下&#xff08;MLE&#xff09;&#xff1a; #include<cstdio>const int maxn 101; int dp[maxn][maxn][maxn][maxn]; int martix[maxn][maxn]; int N, ans;int main(void) {scanf("%d&q…

jackson 轻松搞定接口数据脱敏

一、简介 实际的业务开发过程中&#xff0c;我们经常需要对用户的隐私数据进行脱敏处理&#xff0c;所谓脱敏处理其实就是将数据进行混淆隐藏&#xff0c;例如下图&#xff0c;将用户的手机号、地址等数据信息&#xff0c;采用*进行隐藏&#xff0c;以免泄露个人隐私信息。 如…

C++_基本语法笔记_模板

函数模板 基本使用 思想是Java里的泛型&#xff08;不确定用什么类型的数据&#xff09; 这里template这一句&#xff0c;意思是声明T是泛型&#xff0c;后面写用到泛型T的函数。 建议都用template<class T> 应用场景&#xff1a;不同数据类型的交换函数 两种使用方法…

猫咪泪痕消除术!希喂主食罐开启补水大作战!

我家小猫之前的泪痕真的不是一般的严重&#xff0c;每天都能看到它眼角挂着两条明显的褐色痕迹&#xff0c;我每天早晚都得小心翼翼地帮它擦拭&#xff0c;但效果总是微乎其微&#xff0c;眼眶边总是留下那么一圈顽固的黑色痕迹&#xff0c;我真是既忧心又无奈。 后来&#xff…

2024【十大品牌网】发布|车载WiFi十大品牌排行榜

自驾游无法随时随地联网?货车司机流量不够用&#xff1f;网约车线上抢单网速不好&#xff1f;来看看最新发布的车载WiFi十大品牌排行榜&#xff0c;帮你解决网速慢、流量不够用的问题&#xff01; 1.格行 格行作为有15年历史的老牌物联网企业&#xff0c;在产品质量和服务上…

沃可趣助力乐园工会:员工活动的数字化创新与实践

企业组织员工活动难处多多 预算不足都算轻的&#xff0c;时间协调也颇有难度&#xff0c;活动内容设计更是既要激发员工兴趣&#xff0c;又要符合企业文化&#xff0c;这让原本专注于OA服务和福利平台开发的公司纷纷退缩。 因此&#xff0c;当群硕决定在沃可趣上增加活动管理…

渲染优化策略,如何在有限资源下实现最佳视觉效果

在数字内容创作领域&#xff0c;渲染是一个至关重要的环节&#xff0c;它决定了最终图像或动画的视觉质量。然而&#xff0c;高质量的渲染往往伴随着高计算资源需求&#xff0c;如何在有限资源下实现最佳的视觉效果&#xff0c;成为了创作者们不断探索的课题。 一、优化3D模型…

青颖飞帆(青书)大模型算法工程师面试题6道|含解析

问题1、Decoder-Only和Encoder-Decoder模型相比有什么优势&#xff1f;在训练和推理效率上有什么区别&#xff1f;**** Decoder-Only模型&#xff1a;结构较为简洁&#xff0c;通常只由一个解码器组成。模型参数较少&#xff0c;相比于Encoder-Decoder模型在训练和推理上可能更…

UE5学习笔记9-创建一个小窗口提示人物是否和武器重叠

一、目标 创建一个UsrWidget去显示如果人物和武器重叠显示窗口&#xff0c;如果人物和武器不重叠将窗口隐藏 二、创建窗口并显示 1.创建一个窗口蓝图类&#xff0c;命名为PickUpWidget&#xff0c;这个蓝图类不需要C类&#xff0c;在对应文件夹中单机右键选择用户界面的控件蓝…

torch分布式训练DataParallel和DistributedDataParallel

Pytorch 分布式训练主要有两种方式&#xff1a; torch.nn.DataParallel > 简称 DP torch.nn.parallel.DistributedDataParallel > 简称DDP 其中 DP 只用于单机多卡&#xff0c;DDP 可以用于单机多卡也可用于多机多卡&#xff0c;后者现在也是Pytorch训练的主流用法&…

维基知识库系统Wiki.js本地Linux环境部署并配置公网地址远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。

在c#工程里新建了一个类库&#xff0c;编译的场合出现以下警告&#xff1a;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2401,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“…