当前位置: 首页 > 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

相关文章:

  • 网站快速收录:利用新闻源的优势
  • 【C++动态规划 离散化】1626. 无矛盾的最佳球队|2027
  • QT设置应用程序图标
  • 青少年编程与数学 02-008 Pyhon语言编程基础 07课题、数字
  • 本地部署deepseek模型步骤
  • 蓝牙技术在物联网中的应用有哪些
  • 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配置