LeetCode 0931. 下降路径最小和:通俗思路讲解

news2024/11/27 14:30:41

【LetMeFly】931.下降路径最小和:通俗思路讲解

力扣题目链接:https://leetcode.cn/problems/minimum-falling-path-sum/

给你一个 n x n 方形 整数数组 matrix ,请你找出并返回通过 matrix下降路径 最小和

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1)

 

示例 1:

输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]
输出:13
解释:如图所示,为和最小的两条下降路径

示例 2:

输入:matrix = [[-19,57],[-40,-5]]
输出:-59
解释:如图所示,为和最小的下降路径

 

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 100
  • -100 <= matrix[i][j] <= 100

方法一:动态规划

换个思维: m a t r i x [ i ] [ j ] matrix[i][j] matrix[i][j]只能由 m a t r i x [ i − 1 ] [ j − 1 ] matrix[i - 1][j - 1] matrix[i1][j1] m a t r i x [ i − 1 ] [ j ] matrix[i - 1][j] matrix[i1][j] m a t r i x [ i − 1 ] [ j + 1 ] matrix[i - 1][j + 1] matrix[i1][j+1]走到。

那么从这三个的哪一个过来呢?当然是这三个中最小的那个。

于是我们就直到怎么做了。

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 s i z e ( m a t r i x ) = n × n size(matrix) = n\times n size(matrix)=n×n
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int m = 1e8;
                for (int k = -1; k <= 1; k++) {
                    if (j + k >= 0 && j + k < n) {
                        m = min(m, matrix[i - 1][j + k]);
                    }
                }
                matrix[i][j] += m;
            }
        }
        int ans = 1e8;
        for (int j = 0; j < n; j++) {
            ans = min(ans, matrix[n - 1][j]);
        }
        return ans;
    }
};

Python

# from typing import List

class Solution:
    def minFallingPathSum(self, matrix: List[List[int]]) -> int:
        n = len(matrix)
        for i in range(1, n):
            for j in range(n):
                m = 1e8
                for k in range(-1, 2):
                    if 0 <= j + k < n:
                        m = min(m, matrix[i - 1][j + k])
                matrix[i][j] += m
        return min(matrix[-1])

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131694030

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

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

相关文章

LeetCode 142.环形链表II

142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNode …

Java前端开发工程师的职责

Java前端开发工程师的职责1 职责&#xff1a; 1.负责公司现有软件的二次使用开发、测试; 2.负责公司信息化管理软件的开发; 3.修改已有的系统方案&#xff0c;以维持优良的操作性能及正常的信息沟通; 4.完善公司系统&#xff0c;完成项目接口、开发工作; 5. 能单独根据需求…

【yarn】 ‘husky install‘ fails if ‘.git‘ directory does not exists解决方法

问题描述 环境&#xff1a;win10 yarn 1.22.19 问题&#xff1a;在使用yarn安装前端依赖时&#xff0c;yarn install 出现错误: .git can’t be found (see https://git.io/Jc3F9) error Command failed with exit code 1. 截图 原因分析 根据设计&#xff0c;husky安装必…

数据结构-双向带头循环链表

链表的分类实现带有哨兵位的双向的循环链表**定义节点的结构**初始化单个节点初始化带有哨兵位的双向循环链表打印链表销毁链表尾插尾删头插头删find函数在任意位置之前插入任意位置的删除全部代码list.hlist.ctest.c 链表和顺序表的区别 链表的分类 如下 根据上述的三种组合…

线性调频信号公式推导及matlab仿真

线性调频信号的数学表达式&#xff1a; 其中&#xff0c;t是时间变量&#xff0c;单位为秒&#xff08;s&#xff09;&#xff1b;T为脉冲持续时间&#xff08;周期&#xff09;&#xff1b;K是线性调频率&#xff0c;单位是Hz/s&#xff1b; 角度&#xff08;单位为弧度&…

【通过粒子滤波进行地形辅助导航】用于地形辅助导航的粒子滤波器和 PCRB研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【MySQL异常解决】MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案

MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案 一、背景描述二、报错原因三、解决方案3.1 升级 MySQL 数据库版本3.2 修改字符集为 一、背景描述 从服务器MySQL中导出数据为SQL执行脚本后&#xff0c;在本地电脑执行导出的SQL脚本&#xff0c;…

【数据结构---排序】庖丁解牛式剖析常见的排序算法

排序算法 一、常见的排序算法二、常见排序算法的实现1. 直接插入排序2. 希尔排序3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序6.1 递归实现快速排序思路一、hoare 版本思路二、挖坑法思路三、前后指针法 6.2 非递归实现快速排序 7. 归并排序7.1 归并排序的递归实现7.2 归并…

Word2Vec实现文本识别分类

深度学习训练营之使用Word2Vec实现文本识别分类 原文链接环境介绍前言前置工作设置GPU数据查看构建数据迭代器 Word2Vec的调用生成数据批次和迭代器模型训练初始化拆分数据集并进行训练 预测 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&…

Apache Phoenix(2):安装Phoenix

1 下载 大家可以从官网上下载与HBase版本对应的Phoenix版本。 http://phoenix.apache.org/download.html 2 安装 &#xff08;1&#xff09;上传安装包到Linux系统&#xff0c;并解压 cd /opt/ tar -xvzf phoenix-hbase-2.5-5.1.3-bin.tar.gz &#xff08;2&#xff09;将p…

软件测试真实企业测试流程

最近收到不少准备转行软件测试的小伙伴私信问真实企业里面软件测试流程是什么样子的&#xff1f; 对于这个问题&#xff0c;在面试的时候也是经常会被问到。 关于测试流程&#xff0c;100家公司可能有100套测试流程&#xff0c;但是基本上都是大同小异&#xff0c;完全可以将测…

行业追踪,2023-07-14,汽车零部件在反弹时已清仓,耐心等待第二波买点重现

自动复盘 2023-07-14 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

ELK-日志服务【kafka-配置使用】

kafka-01 10.0.0.21 kafka-02 10.0.0.22 kafka-03 10.0.0.23 【1】安装zk集群、配置 [rootes-01 ~]# yum -y install java maven [rootes-01 ~]# tar xf apache-zookeeper-3.5.9-bin.tar.gz -C /opt/[rootes-01 ~]# cd /opt/apache-zookeeper-3.5.9-bin/conf/ [rootes-…

MySQL结构以及数据管理(增删改查)

目录 1.数据库的简介 2.数据库分类 2.1关系型数据库 2.2 非关系型数据库 3.mysql的数据类型 3.1 常用的数据库类型 4.mysql的数据库结构 4.1 查看库信息 4.2 查看表信息 5.SQL 语句 5.1 SQL语言分类&#xff1a; 1.数据库的简介 数据库&#xff08;database&#…

基于LoRa技术的网络终端无线程序升级系统研究(学习)

摘要 设计了一种基于LoRa技术的STM32F4无线程序升级系统。此系统由PC及相关STM32软件开发环境、LoRa通信模块及控制器和STM32F4终端三部分组成。 本系统采用LoRa技术将程序数据无线发送到终端&#xff0c;终端通过IAP技术实现远程无线程序自动升级。测试结果表明&#xff0c;…

基于Springboot+Vue的宠物店猫咖管理系统(源代码+数据库)088

基于SpringbootVue的宠物店猫咖管理系统(源代码数据库)088 一、系统介绍 本系统分为管理员、店长、用户三种角色 用户角色包含以下功能&#xff1a; 登录、注册、我的宠物、我的信息、文件管理、我的预约、门店详情、打工喵、本地喵、外来喵、宠物领养、个人中心、密码修改…

0基础学习VR全景平台篇 第61篇:基本功能-如何发布VR视频

戳我先了解“全景视频上传规范” 1、点击【上传】按钮&#xff0c;打开本地文件夹&#xff0c;上传符合要求的全景视频素材&#xff0c;可以选择单个或多个视频同时上传。 2、视频上传成功以后&#xff0c;需要处理一段时间&#xff0c;请耐心等待。 视频处理好以后&#xff0…

2023年7月最新ESI 中国 国内高校排名(附上下载链接),

东南大学的排名 多年来 一直是22, 21 &#xff0c;还需要进一步提高&#xff0c;进入前10. 下载连接 (375条消息) 2023年7月最新ESI数据国内高校排名表格-行业报告文档类资源-CSDN文库

Vue3 组件之间跨级通信

文章目录 Vue3 组件之间跨级通信概述选项式API简单使用支持响应式调用顶层方法 组合式API简单使用支持响应式底层调顶层方法 Vue3 组件之间跨级通信 概述 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用props。 但是一些多层级嵌套的组件&a…

【Vue】给 elementUI 中的 this.$confirm、this.$alert、 this.$prompt添加按钮的加载效果

文章目录 主要使用 beforeClose 方法实现 loading 的效果beforeClose MessageBox 关闭前的回调&#xff0c;会暂停实例的关闭 function(action, instance, done)1. action 的值为confirm, cancel或close。 2. instance 为 MessageBox 实例&#xff0c;可以通过它访问实例上的属…