Hot100-最小路径和

news2024/10/5 18:29:14

1 前言

1.1 题目描述

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

如下图所示:

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

 1.2 题目解析

看到这个题,首先想出来的是使用动态规划。

设置dp[i][j] 表示走到(i,j)节点的最小路径和。

此时我们要分三种情况。

第一种,上图二维数组中最上面的[1,3,1],它只能从被其左侧前一个节点走到。

 

第二种,上图二维数组中最左侧的[1,1,4],它只能被其上面一个节点走到。

 

第三种,是剩余部分,可以从其上侧节点或者左侧节点走到。

 

因此dp数组的更新策略也有三种

第一种:dp[0][j] = dp[0][j-1] + grid[0][j];

第二种:dp[i][0] = dp[i-1][0] + grid[i][0]

第三种:dp[i][j] = gird[i][j] +min(dp[i-1][j],dp[i][j-1])

1.3 代码实现

package cn.msf.hot100;

import java.util.Arrays;

/**
 * @author : msf
 * @date : 2022/12/12
 * 最小路径和
 */
public class MinPathSum {
    public static void main(String[] args) {
        int[][] grid = {{1,2,3},{4,5,6}};
        int result = new MinPathSum().minPathSum(grid);
        System.out.println(result);
    }


    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        int[][] dp = new int[m][n];
        dp[0][0] = grid[0][0];
        // 处理顶层的行
        for (int i = 1; i < n; i++) {
            dp[0][i] = grid[0][i] + dp[0][i-1];
        }
        // 处理最左边的列
        for (int j = 1; j < m; j++) {
            dp[j][0] = grid[j][0] + dp[j-1][0];
        }
        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                dp[i][j] = grid[i][j] + Math.min(dp[i-1][j],dp[i][j-1]);
            }
        }

        return dp[m-1][n-1];
    }
}

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

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

相关文章

ConversionService转换服务使用

前言 在最近分析和写的SpringBoot源码分析(面试官&#xff1a;你说说Springboot的启动过程吧(5万字分析启动过程))中&#xff0c;给自己留了一个关于ConversionService的使用的作业&#xff0c;这不就来补作业了。 使用出处 这个转换服务我这里的例子很简单&#xff0c;就是…

计算机研究生就业方向之去大厂做架构师

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么&#xff0c;如果你只是转码&#xff0c;那么你不一定要考研&#xff0c;至少以下几个职位研究生是没有啥优势的&#xff1a; 1&#xff0c;软件测试工程师&#xff08;培训一下就行&#xff09; 2&#xff0c;前…

RocketMQ详解及开发用例

概念 Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件。 支持Broker和Consumer端消息过滤&#xff0c;支持发布订阅模型和点对点&#xff0c;支持拉pull和推push两种消息模式&#xff0c;单一队列百万消息、亿级消息堆积&#xff0c;支持单master节点&a…

力扣202.快乐数(java语言HashSet方法,类双指针方法)

前言&#xff1a;此题被分类到散列表算法题目中&#xff0c;但乍一看此题实在想不到如何去使用散列表&#xff0c;直到看了官方给的答案。。。。。。 题目描述&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#…

C++ 基本语法

&#x1f4d2;博客主页&#xff1a; ​​开心档博客主页​​ &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由开心档原创&#xff01; &#x1f4c6;51CTO首发时间&#xff1a;&#x1f334;2022年12月12日&#x1f334; ✉…

Python40个自动化办公实战案例,终于实现下班自由啦~

拿来就能用&#xff0c;这么爽的吗&#xff1f;&#xff01; 今天我想聊聊&#xff0c;如何通过Python自动化工具&#xff0c;解决工作中常见的办公效率低下的问题。 你有没有想过&#xff0c;下班晚&#xff0c;加班&#xff0c;可能是因为自己工作比较低效&#xff1f; 回…

wireshark 分析理解DHCP流程

DHCP概念&#xff1a; 动态主机配置协议 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;&#xff0c;是一个应用层协议。该协议允许服务器向客户端动态分配 IP 地址和配置信息。 知识补充&#xff1a; BOOTP&#xff08;Boots…

PVE使用cloud-init快速启动虚拟机

这里写目录标题关于cloud-init云镜像&#xff08;cloud image&#xff09;下载创建虚拟机模板&#xff0c;可反复使用DebianUbuntuCentOS使用模板关于cloud-init 传统ISO镜像装机时&#xff0c;需要一步一步规定虚拟机&#xff0c;比如系统盘安装在哪个磁盘里&#xff0c;ip是…

Vue Material - 基于谷歌 Material Design 打造的前端组件库,用 Vue 开发海外应用的绝佳选择

一位朋友问我用 vue 开发 APP 在谷歌商店上架&#xff0c;有什么简单的 UI 组件库&#xff0c;我推荐了这款&#xff0c;同样推荐给各位。 关于 Vue Material Vue Material 是一款简单、轻量级的 Vue 组件&#xff0c;组件的设计完全按照 Google Material Design 规范构建&am…

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH)

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH) 产品描述&#xff1a;以自制的琥珀酰化壳聚糖 (SUCS)和羟甲基-5-氟尿嘧啶(5-FuOH)为原料,制备了壳聚糖偶联载药体(SUCS-5-FuOH).结果表明,SUCS和5-FuOH间通过酯键化学键合,接枝率(载药率)为18.7%,在模拟体液和酶存在条件下均有…

Redis高可用全景一览

前言 前几天我在知乎看到一个问题&#xff1a;如何建立自己的知识体系和观点&#xff1f;[1] 在一篇高赞回答中讲述了建立“外脑”是关键&#xff0c;文章观点认为&#xff1a;大脑是用来思考的&#xff0c;不是用来记忆的。 我很认同这样的看法&#xff0c;我的账号名为“杨同…

电脑怎么滚动截图的方法

电脑截图常见的有矩形截图、任意形状截图、全屏幕截图、窗口截图等等&#xff0c;那你知道怎么在电脑上滚动截图吗&#xff1f;有时候可能会需要用到滚动截长图&#xff0c;但是很多 用户都不清楚怎么操作&#xff0c;下面小编就来教教大家电脑怎么滚动截图的方法&#xff08;除…

云存储--2

那么&#xff0c;根据我们上一版块的延续&#xff0c;我们来讲讲实际在linux中需要如何进行存储方面的一个操作吧。 那么我使用的是RHEL9.1 红帽作为在linux领域具有绝对的话语权和强大的市场&#xff0c;所以使用该系统还是有点原因哒~ 那么可能会有同学有疑问&#xff1a;欸&…

多目标遗传算法NSGAII求解环境经济调度(Python代码实现)

目录 1 电力系统环境经济调度数学模型 2 算例——IEEE10节点 2.1 数据​ 2.2 Python代码学习 3 一点拓展知识 1 电力系统环境经济调度数学模型 2 算例——IEEE10节点 2.1 数据 我弄成一个表格&#xff0c;方便编程读写&#xff1a; 2.2 Python代码学习 多目标遗传算法N…

【Flutter 组件】002-基础组件:文本与样式

【Flutter 组件】002-基础组件&#xff1a;文本与样式 文章目录【Flutter 组件】002-基础组件&#xff1a;文本与样式一、Text1、概述2、属性列表3、构造方法4、示例代码演示运行结果二、TextStyle1、概述2、属性列表3、构造方法4、示例代码示例运行结果三、TextSpan1、概述2、…

数字图像处理(入门篇)十 边缘检测

目录 一 边缘检测算子 1 Roberts算子 2 Sobel算子 3 Prewitt算子 二 实践 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;结果图 边缘检测是计算机视觉中的基本问题&#xff0c;边缘检测的难点就在于如何又快又准确地提取图像的边缘信息。 边缘检测的基本方法…

流媒体分析之webrtc之rtcp

TCP作为RTP控制协议&#xff0c;对于弱网下音视频质量和会话控制具有重要的作用。 1. RTCP Header V&#xff1a;RTCP的版本号&#xff0c;一定等于2&#xff1b; P&#xff1a;如果设置&#xff0c;填充位表示数据包包含末尾的附加填充八位字节&#xff0c;不属于控制信息&am…

基于jsp+mysql+ssm影视爱好者论坛交流系统-计算机毕业设计

项目介绍 设计一个电影学习交流社区&#xff0c;使对电影的学生可以方便的进行交流。同时&#xff0c;通过此课题使学生熟悉网站搭建流程和方法。 意义&#xff1a;此课题实现后&#xff0c;可以为喜欢电影的学生提供一个交流学习的平台&#xff0c;提高学生学习兴趣。同时&am…

想提前躺平的程序员,这10个网站收好了!

我们的口号是&#xff1a;搞钱&#xff01;搞钱&#xff01;再搞钱&#xff01;程序员想兼职但是不知道该上哪找&#xff1f; 为大家整理了7个程序员最常用的接私活平台&#xff0c;希望对你有帮助&#xff01;记得点赞收藏&#xff0c;先码后看&#xff01;1、程序员客栈 程序…

基于jsp+mysql+ssm游戏爱好者论坛交流设计-计算机毕业设计

项目介绍 本论坛是一个面向爱好游戏的玩家提供一个交流分享游戏攻略、视频、图片以及娱乐互动,让游戏玩家展示自己最真实的心声!论坛提供注册、登陆、发帖、回复、搜索等功能。用户可以利用论坛进行网上约伴、分享装备属性及其获得方法&#xff0c;进行账号交易等&#xff0c;…