当前位置: 首页 > article >正文

Leetcode刷题笔记题解(C++):64. 最小路径和

思路一:dfs深度优先搜索,然后取最小路径值,但是时间消耗较大,时间复杂度可能不满足,代码如下:

class Solution {
public:
    int res = 1000000;
    int rows,cols;
    int minPathSum(vector<vector<int>>& grid) {
        rows = grid.size();
        cols = grid[0].size();
        dfs(grid,0,0,0);
        return res;
    }
    void dfs(vector<vector<int>>& grid,int row,int col,int sum){
        sum += grid[row][col];
        if(row == rows-1 && col == cols-1){
            res = min(sum,res);
            return;
        }
        if(row < rows-1) dfs(grid,row+1,col,sum);
        if(col < cols-1) dfs(grid,row,col+1,sum);
    }
};

思路二:动态规划,记录每个节点的最小路径值,最后可得出最后一个节点的最小路径值

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int rows = grid.size();
        int cols = grid[0].size();
        vector<vector<int>> dp(rows,vector<int>(cols));
        //第一个节点为本身值
        dp[0][0] = grid[0][0];
        //第一行的最小路径值,因为只有一条路径
        for(int i = 1;i < cols;i++){
            dp[0][i] = dp[0][i-1] + grid[0][i];
        }
        //第一列的最小路径值,因为只有一条路径
        for(int i = 1;i < rows;i++){
            dp[i][0] = dp[i-1][0] + grid[i][0];
        }
        //其余的最小路径值
        for(int i = 1;i < rows;i++){
            for(int j = 1;j < cols;j++){
                //从左或者从右到达当前节点比较两者最小值,然后加上自身
                dp[i][j] = min(dp[i][j-1],dp[i-1][j]) + grid[i][j];
            }
        }
        //得出最后一个节点的最小路径值
        return dp[rows-1][cols-1];
    }
};


http://www.kler.cn/a/231451.html

相关文章:

  • Leetcode 回文数
  • TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞
  • vue3 路由写法及传参方式 !超详细
  • DNS with libevent
  • oracle19c开机自启动
  • MySQL的编程语言
  • TI毫米波雷达开发——High Accuracy Demo 串口数据接收及TLV协议解析 matlab 源码
  • JAVA的学习Day1
  • uniapp /微信小程序 使用map组件实现手绘地图方案
  • LeetCode 刷题【Java常用API与数据结构总结】(持续更新……)
  • 92.使用数组形式的责任链模式实现项目配置初始化
  • 深度学习(14)--x.view()详解
  • Kubernetes 是什么?
  • 【算法题】95. 不同的二叉搜索树 II
  • ChatPromptTemplate和AI Message的用法
  • C语言第二十弹---指针(四)
  • vue3-内置组件-KeepAlive
  • Android:IntentActivity,Service,BroadcastReceiver
  • FANUC机器人外部远程启动的相关参数设置示例
  • docker proxy 【docker 代理】
  • ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot
  • 相机图像质量研究(8)常见问题总结:光学结构对成像的影响--工厂调焦
  • BUGKU-WEB 留言板
  • 大数据环境搭建(一)-Hive
  • FFMPEG推流到B站直播
  • VRRP配置