@@ -79,7 +79,7 @@ console.log(minimumTotal(tringle)); //11
7979
8080` f(i,j)=min(f(i+1,j),f(i+1,j+1))+triangle[i][j] `
8181
82- ``` js
82+ ``` tsx
8383var minimumTotal = function (tringle ){
8484 let row = tringle .length ;
8585 let dp = new Array (row + 1 ).fill (0 );
@@ -90,6 +90,20 @@ var minimumTotal = function(tringle){
9090 }
9191 return dp [0 ];
9292}
93+
94+ function minimumTotal(triangle : number [][]): number { // 时间、空间复杂度O(n2)
95+ const len = triangle .length
96+ const ans: number [][] = new Array (len ).fill (0 ).map (() => new Array (len ).fill (0 ))
97+ ans [0 ][0 ] = triangle [0 ][0 ]
98+ for (let i = 1 ; i < len ; i ++ ) {
99+ ans [i ][0 ] = ans [i - 1 ][0 ] + triangle [i ][0 ]
100+ for (let j = 1 ; j < triangle [i ].length ; j ++ ) {
101+ ans [i ][j ] = Math .min (ans [i - 1 ][j ], ans [i - 1 ][j - 1 ]) + triangle [i ][j ]
102+ }
103+ ans [i ][i ] = ans [i - 1 ][i - 1 ] + triangle [i ][i ]
104+ }
105+ return Math .min (... ans [len - 1 ])
106+ };
93107```
94108
95109## 递归和动规关系
@@ -104,7 +118,7 @@ Function(x) {
104118}
105119```
106120
107- 动态规划:是一种解决问题的思想,大规模问题的结果,是由小规模问 题的结果运算得来的 。动态规划可用递归来实现(Memorization Search)
121+ 动态规划:是一种解决问题的思想,大规模问题的结果,是由小规模问题的结果运算得来的 。动态规划可用递归来实现(Memorization Search)。
108122
109123## 使用场景
110124
@@ -127,7 +141,7 @@ Function(x) {
1271412 . 方程 Function
128142 - 状态之间的联系,怎么通过小的状态,来算大的状态
1291433 . 初始化 Intialization
130- - 最极限的小状态是什么, 起点
144+ - 最极限的小状态是什么, 起点
1311454 . 答案 Answer
132146 - 最大的那个状态是什么,终点
133147
@@ -299,14 +313,6 @@ function jump(nums: number[]): number { //从前往后推
299313
300314给你一个字符串 ` s ` ,请你将 ` s ` 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。
301315
302- ``` tsx
303-
304- ```
305-
306- ##### [ 300. 最长递增子序列] ( https://leetcode-cn.com/problems/longest-increasing-subsequence/ )
307-
308- 给你一个整数数组 ` nums ` ,找到其中最长严格递增子序列的长度。
309-
310316##### [ 300. 最长递增子序列] ( https://leetcode-cn.com/problems/longest-increasing-subsequence/ )
311317
312318给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
0 commit comments