| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode动态规划系列(求路径篇) -> 正文阅读 |
|
[数据结构与算法]leetcode动态规划系列(求路径篇) |
目录
题目描述:
?思路:看到路径直接就不多想就是动态规划,这道题是给定我们目标的坐标m和n,要我们求机器人能到达目标坐标的路径有多少条,机器人只能往下或者往右走一步,所以这个关系我们很容易找啊,dp[i][j] = dp[i-1][j] + dp[i][j-1] ,就是一个位置的可能路径就是左边位置+上面位置; 找到这个关系我们思路就很清晰了,直接上代码:
此时时间复杂度O(m*n),空间复杂度O(m*n)? 我们会发现,我们虽然用了一个二维数组来dp,但是只用了一次,我们为什么要浪费这么大的空间呢,完全可以转化为一个一维数组,dp[i] = dp[i] + dp[i-1] ?用一个一维数组代替原来的二维数组,极大程度的减少了我们耗费的空间! 我们进入代码:
优化后的空间复杂度:O(m)
思路:老规矩,先确定解题方法,求路径用动态规划,这道题与咱们上一道讲解的不同路径和有点相似,大家可以先自己根据上一题的思路想想这道题; 咱们言归正传,先审题,这道题要我们求从左上角到右下角的最小路径和,关键点来了规定只能向下或者向右走一步,所以我们找最小路径和时,只需要比较上面位置的路径和左边位置的路径,即求dp[i][j]?= grid[i][j] + Math.min(dp[i-1][j],dp[i][j-1]); 注:由于题目给定我们的是二维数组,我们可以不引入新的数组,可以直接在原来的数组grid上进行动态规划 我们直接进入代码:
时间复杂度:O(m*n) 空间复杂度:O(1) 持续更新中~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:28:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |