leetcode刷题记录(一百一十五)——64. 最小路径和

news/2025/2/24 1:40:03

(一)问题描述

64. 最小路径和 - 力扣(LeetCode)64. 最小路径和 - 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。 示例 1:[https://assets.leetcode.com/uploads/2020/11/05/minpath.jpg]输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12 提示: * m == grid.length * n == grid[i].length * 1 <= m, n <= 200 * 0 <= grid[i][j] <= 200https://leetcode.cn/problems/minimum-path-sum/description/?envType=study-plan-v2&envId=top-100-liked

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

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

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

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

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 200

 (二)解决思路

        这道题和62. 不同路径思路是类似的,只不过由数个数变成了求和。还有一个问题是除了第一行和第一列元素,所有的元素都是由它的上一个元素或者左边一个元素走过来的,因此由递推公式dp[i][j]=Math.min(dp[i][j-1]+dp[i][j],dp[i-1][j]+dp[i][j]),所以这里要分情况讨论:

  • 当i>0且j=0时,dp[i][0]=dp[i−1][0]+grid[i][0]。
  • 当i=0且j>0时,dp[0][j]=dp[0][j−1]+grid[0][j]。
  • 当i>0且j>0时,dp[i][j]=min(dp[i−1][j],dp[i][j−1])+grid[i][j]。
class Solution {
    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;

        int[][] dp = grid;

        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i==0&&j!=0){
                    dp[i][j] = dp[i][j-1]+dp[i][j];
                }
                else if(i!=0&&j==0){
                    dp[i][j] = dp[i-1][j]+dp[i][j];
                }
                else if(i!=0&&j!=0){
                    dp[i][j]=Math.min(dp[i][j-1]+dp[i][j],dp[i-1][j]+dp[i][j]);
                }
            }
        }
        
        return dp[m-1][n-1];
    }
}

http://www.niftyadmin.cn/n/5863913.html

相关文章

51单片机-80C51的串行口

目录 1、80C51的串行口 1.1、80C51串行口的控制寄存器 1.2、80C51串行口的工作方式 1.3、波特率的计算 1.4、串口如何使用 2、单片机与单片机的通信 1、80C51的串行口 有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一个地址99H;接收器是双缓冲结构;发送缓冲器,…

使用postman测试api接口基本步骤

测试一个已写好的 API 接口需要系统性地验证其功能、性能、安全性及异常处理能力。以下是使用 Postman 进行 API 接口测试的详细步骤和注意事项&#xff1a; 1. 确认接口文档 明确输入输出&#xff1a;了解接口的请求方法&#xff08;GET/POST/PUT/DELETE&#xff09;、URL、请…

12.Docker 的资源限制

Docker 的资源限制 Docker 的资源限制1. Stress-ng 压力测试工具2. OOM &#xff08;Out of Memory Exception&#xff09;3. 容器的内存限制4. 容器的 CPU 限制 Docker 的资源限制 官方文档&#xff1a;https://docs.docker.com/engine/containers/resource_constraints/ 默…

DNS, domain name system

DNS 是一种应用层协议和http/https是同一等级的 其传输层主要用的是udp&#xff0c;也可能用tcp DNS协议完成的作用&#xff1a;查 域名对应的 ip DNS服务器完成的作用&#xff1a;存储 域名 -> ip 的映射 DNS服务器有三个等级&#xff1a;根DNS&#xff0c;顶级域DNS&…

[Android]如何在代码中访问LayoutParams修改layout_weight?

代码如下&#xff0c;如何在代码中修改NumberWheelView的layout_weight&#xff1f; yearWheelView findViewById(R.id.wheel_picker_date_year_wheel); <com.github.androidpicker.wheelview.widget.NumberWheelViewandroid:id"id/wheel_picker_date_year_wheel&quo…

git从本地其他设备上fetch分支

在 Git 中&#xff0c;如果你想从本地其他设备上获取分支&#xff0c;可以通过以下几种方式实现。不过&#xff0c;需要注意的是&#xff0c;Git 本身是分布式版本控制系统&#xff0c;通常我们是从远程仓库&#xff08;如 GitHub、GitLab 等&#xff09;拉取分支&#xff0c;而…

在UBUNTU下搭建Deepseek

在UBUNTU下搭建Deepseek 一、安装UBUNTU 这个就不多说了&#xff0c;无外乎下载UBUNTU的iso&#xff0c;然后用UltraIso制作U盘&#xff0c;然后重启设置启动盘&#xff0c;安装… 二、安装Ollama curl -sSfL https://ollama.com/install.sh | sh这里可能需要你先安装curl工…

MATLAB | 设置滑动窗口计算栅格数据的CV变异系数

一、变异系数 变异系数&#xff08;CV&#xff09;是衡量数据稳定性的重要指标&#xff0c;表示数据的波动程度&#xff0c;计算方式是标准差与均值的比值。在栅格数据分析中&#xff0c;较低的变异系数意味着数据变化较小、稳定性较高&#xff0c;而较高的变异系数则表明数据…