LC-1289. 下降路径最小和 II(记忆化搜索==> 动态规划)

news2024/10/7 4:24:06

1289. 下降路径最小和 II

难度困难108

给你一个 n x n 整数矩阵 grid ,请你返回 非零偏移下降路径 数字和的最小值。

非零偏移下降路径 定义为:从 grid 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。

示例 1:

img

输入:grid = [[1,2,3],[4,5,6],[7,8,9]]
输出:13
解释:
所有非零偏移下降路径包括:
[1,5,9], [1,5,7], [1,6,7], [1,6,8],
[2,4,8], [2,4,9], [2,6,7], [2,6,8],
[3,4,8], [3,4,9], [3,5,7], [3,5,9]
下降路径中数字和最小的是 [1,5,7] ,所以答案是 13 。

示例 2:

输入:grid = [[7]]
输出:7

提示:

  • n == grid.length == grid[i].length
  • 1 <= n <= 200
  • -99 <= grid[i][j] <= 99
class Solution {
    int[][] grid, cache;
    int m, n;
    public int minFallingPathSum(int[][] grid) {
        this.grid = grid;
        m = grid.length;
        n = grid[0].length;
        cache = new int[m][n];
        for(int i = 0; i < m; i++)
            Arrays.fill(cache[i], -1);
        int res = Integer.MAX_VALUE / 2;
        for(int i = 0; i < n; i++){
            res = Math.min(res, dfs(n-1, i));
        }
        return res;
    }

    // 走到 (i, j) 时的最小路径和
    public int dfs(int i, int j){
        if(i == 0){
            return grid[i][j];
        }
        if(cache[i][j] >= 0) return cache[i][j];
        int res = Integer.MAX_VALUE / 2;
        for(int k = 0; k < n; k++){
            if(k == j) continue;
            res = Math.min(res, dfs(i-1, k) + grid[i][j]);
        }
        return cache[i][j] = res;
    }
}

记忆化搜索转递推

class Solution {
    public int minFallingPathSum(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        int[][] f = new int[m][n];
        for(int i = 0; i < n; i++)
            f[0][i] = grid[0][i];
        for(int i = 1; i < m; i++){
            for(int j = 0; j < n; j++){
                f[i][j] = Integer.MAX_VALUE / 2;
                for(int k = 0; k < n; k++){
                    if(j == k) continue;
                    f[i][j] = Math.min(f[i][j], f[i-1][k] + grid[i][j]);
                }
            }
        }
        int res = Integer.MAX_VALUE / 2;
        for(int i = 0; i < n; i++)
            res = Math.min(res, f[m-1][i]);
        return res;
    }
}

路径问题(目录)

https://leetcode.cn/problems/minimum-falling-path-sum-ii/solution/dong-tai-gui-hua-lu-jing-wen-ti-ben-xi-l-m85q/

62.不同路径(中等):路径问题第一讲

63.不同路径 II(中等):路径问题第二讲

64.最小路径和(中等):路径问题第三讲

120.三角形最小路径和(中等):路径问题第四讲

931.下降路径最小和(中等):路径问题第五讲

1289.下降路径最小和 II(困难):路径问题第六讲

1575.统计所有可行路径(困难):路径问题第七讲(记忆化搜索)

1575.统计所有可行路径(困难):路径问题第八讲(动态规划)

576.出界的路径数(中等):路径问题第九讲

1301.最大得分的路径数目(困难):路径问题第十讲

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

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

相关文章

♥ vue中$set用法详细讲解

♥ vue中$set用法详细讲解 1、认识 在vue中&#xff0c;并不是任何时候数据都是双向绑定的。 官方文档介绍 使用场景 当数据没有被双向绑定的时候&#xff0c;我们就需要使用set了 举个例子&#xff1a; vue的data里边声明或者已经赋值过的对象或者数组&#xff08;数组里…

C#版本LINQ增强开源库

LINQ对应的中文名称是&#xff1a;语言集成查询&#xff0c;是对一系列直接将查询功能集成到C#语言技术的统称&#xff0c;我们最常用的场景是&#xff0c;用于数据库的查询功能。 在.Net中&#xff0c;本身对Objects也支持LINQ的扩展&#xff0c;但是对于一些特定的功能&…

Linux C 语言 mosquitto 方式 MQTT 发布消息

1 说明 采用 mosquitto 库&#xff0c;实现对主题发布消息。 其中服务器有做限制&#xff0c;需要对应的 cilent id &#xff0c;cafile 、certfile 、keyfile 等配置 2 开发环境 采用ubuntu 直接编译调试 安装mosquitto 库 sudo apt install libmosquitto-dev sudo apt-ge…

Nginx虚拟主机和日志详解

目录 1.Nginx虚拟主机1.1基于IP虚拟主机1.2基于端口虚拟主机1.3基于域名实现的虚拟主机 2.日志详解 1.Nginx虚拟主机 虚拟主机&#xff0c;Nginx配置中的多个server{}区域对应不同的业务(站点) 虚拟主机方式基于域名的虚拟主机不同的域名访问不同的站点基于IP的虚拟主机不同的…

跨境电商线上店铺智能装修系统源码开发

搭建一个跨境电商线上店铺智能装修系统源码开发需要以下步骤&#xff1a; 1. 确定需求&#xff1a;首先&#xff0c;需要明确线上店铺智能装修系统的具体需求。 2. 选择开发语言和框架&#xff1a;根据需求&#xff0c;选择合适的开发语言和框架进行开发&#xff0c;可以提高…

选读SQL经典实例笔记21_字符串处理

1. SQL 并不专门用于处理复杂的字符串 1.1. 需要有逐字遍历字符串的能力。但是&#xff0c;使用SQL 进行这样的操作并不容易 1.2. SQL 没有Loop循环功能 1.2.1. Oracle的MODEL子句除外 2. 遍历字符串 2.1. 把EMP表的ENAME等于KING的字符串拆开来显示为4行&#xff0c;每行…

提速计算机运行速度方法

提速计算机运行速度方法 1&#xff0c;首先看这一步情况运行负载是否很高&#xff0c;很高就容易产生迟钝&#xff01;2&#xff0c;安装一个清理电脑空间的软件&#xff0c;深度清理的。3&#xff0c;点击这里&#xff0c;看开机自启动的软件有哪些&#xff0c;如下图所示。4&…

CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数

一、淘金优化算法GRO 淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;由Kamran Zolf于2023年提出&#xff0c;其灵感来自淘金热&#xff0c;模拟淘金者进行黄金勘探行为。淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;提…

logstash日志换行处理小解

logstash主用于日志实时数据收集、解析&#xff0c;并将数据转发的工具&#xff0c;内置的功能也相当强大。但&#xff0c;同时意味着&#xff0c;他可能接收到各种情况的数据。 此处&#xff0c;我们主要讲解我实际使用中&#xff0c;碰到的一个小问题&#xff0c;换行(\n)。…

斗轮机与程控站之间开关量双向无线通讯

斗轮堆取料机是一种对散料进行连续堆取作业的高效装卸大型机械,被广泛使用于火力发电厂和炼焦厂的输煤系统中。目前对斗轮机的技改主要为将斗轮机的部分程控信号改为无线传输&#xff0c;取代卷筒电机和电缆的应用。 多数情况下都是利用无线通讯做媒介&#xff0c;让工作人员通…

display 属性有哪些值,分别表示什么意思

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ display 属性是什么&#xff1f;⭐ display 属性有哪些值&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

C# PDF加盖电子章

winform界面 1.选择加签pdf按钮代码实现 private void button1_Click(object sender, EventArgs e){OpenFileDialog op = new OpenFileDialog();op.Filter = "PDF文件(*.pdf)|*.pdf";bool flag = op.ShowDialog() == DialogResult.OK;if (flag){string pdfPath = P…

springboot+activiti+vue+mysql轻松搞定审批!

前言 目前市场上有很多开源平台没有整合工作流&#xff0c;即使有&#xff0c;也是价格不菲的商业版&#xff0c;来看这篇文章的估计也了解了行情&#xff0c;肯定不便宜。我这个快速开发平台在系统基础功能&#xff08;用户管理&#xff0c;部门管理…&#xff09;上整合了工…

HTTP代理编程:Python实用技巧与代码实例

今天我要与大家分享一些关于HTTP代理编程的实用技巧和Python代码实例。作为一名HTTP代理产品供应商&#xff0c;希望通过这篇文章&#xff0c;帮助你们掌握一些高效且实用的编程技巧&#xff0c;提高开发和使用HTTP代理产品的能力。 一、使用Python的requests库发送HTTP请求&a…

无涯教程-Perl - getpwnam函数

描述 此函数基于EXPR指定的用户名,从/etc/passwd文件提取的列表context中返回字段列表。通常这样使用- ($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) getpwnam($user); 在标量context中,返回数字用户ID。如果尝试访问整个/etc/passwd文件,则应使用getpwent…

【从零学习python 】10.Python条件语句和if嵌套详解

文章目录 elif一、 elif的功能二、注意点if嵌套想一想&#xff1a; 一、if嵌套的格式二、if嵌套的应用为什么结果3和结果4相同&#xff1f;&#xff1f;&#xff1f; 猜拳游戏运行效果:参考代码: if补充内容三、自动类型转换进阶案例 elif 如果有这样一种情况&#xff1a;当条件…

nginx(八十六)uri转义杂谈

一 关于nginx uri过往整理 HTTP1.1(四)URI HTTP1.1(五)URI编码 HTTP杂谈(三)URL特殊字符 以下涉及&#xff1a; 1) location 与$uri --> 路由匹配 --> 通过debug日志观察2) proxy_paas --> attach_url是否有,有是否是变量,决定透传给上游uri的形式3) $reque…

PDF能转CAD格式吗?学会这种方法轻松实现转换

PDF文件可以转换成CAD格式吗&#xff1f;答案是可以的&#xff0c;PDF格式在各种设备和软件上都有很好的兼容性&#xff0c;而CAD格式则是更加专业的CAD软件设计&#xff0c;将PDF转换为CAD格式可以确保在设计过程中不会出现无法编辑的现象&#xff0c;极大的提高工作效率&…

arcgis pro 3.0.2 安装及 geemap

arcgis pro 3.0.2 安装及 geemap arcgis pro 3.0.2 安装 arcgis pro 3 版本已经很多了&#xff0c;在网上找到资源就可以进行安装 需要注意的是&#xff1a;有的文件破解文件缺少&#xff0c;导致破解不成功。 能够新建地图就是成功了&#xff01; geemap安装 1.需要进行环…

mac安装redis 配置密码

brew install redis 两个重要目录文件 /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf 配置文件默认是非守护进程运行redis 默认是不用密码验证&#xff0c;配置为开启密码验证 重启redis brew services restart redis 客户端调用 redis-cli 密码 …