IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

动态规划中滚动数组的使用

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

题目

[64. 最小路径和][64.]

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

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

示例:

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

思路

因为每次只能向下或者向右,那么达到一个点的路径只有两种,要么是从上面往下,要么是从左边往右,那么问题就分解成从起点到达上面那个点的最小路径和问题,以及从起点到达左边那个点的最小路径和问题,同时考虑一下边界问题,第一行的点只能从左边往右走,第一列的点只能从上面往下走,即

83_1.png

那么即刻得出以下推导公式

83_2.png

滚动数组压缩空间

观察上面的推导公式发现,dp[i][j]其实只与同列或者同行的上一个状态有关,这怎么理解呢

我们先看第一种情况(i > 0 且 j = 0),dp[i][0] = dp[i-1][0] + grid[i][0],那么可以压缩成dp[i] = dp[i-1] + grid[i][0]

再看第二种情况(i = 0 且 j > 0),dp[0][j] = dp[0][j-1] + grid[0][j],,那么可以压缩成dp[j] = dp[j-1] + grid[0][j]

至于第三种情况,其实可以拆解成dp[i][j] = min(dp[i-1][j] + grid[i][j], dp[i][j-1]+grid[i][j]),即

1、 dp[i][j] = dp[i-1][j] + grid[i][j], 同一列(第j列)
2、 dp[i][j] = min(dp[i][j], dp[i][j-1]+grid[i][j]),同一行(第i行)

那么就可以压缩成dp[i]=min(dp[i], dp[i-1])+grid[i][j]

这里的第二个dp[i]由于还没更新,所以此时它表示的是上一行中第i个点(正上方的Ian)的最小路径和,而dp[i-1]由于刚刚以及更新过了,所以它现在表示的是当前行的第j个点(左边的点)的最小路径和

83_3.png

最终推导出的公式

83_4.png

这样就将dp从二维数组压缩成一维数组了

本文使用 mdnice 排版

文章永久链接:https://tech.souyunku.com/?p=26014


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(94) 打赏



未经允许不得转载:搜云库技术团队 » 动态规划中滚动数组的使用

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367