70 lines
1.4 KiB
Markdown
70 lines
1.4 KiB
Markdown
|
# Leetcode Triangle
|
||
|
|
||
|
#### 2022-07-20 22:59
|
||
|
|
||
|
> ##### Algorithms:
|
||
|
> #algorithm #dynamic_programming
|
||
|
> ##### Difficulty:
|
||
|
> #coding_problem #difficulty-medium
|
||
|
> ##### Additional tags:
|
||
|
> #leetcode
|
||
|
> ##### Revisions:
|
||
|
> N/A
|
||
|
|
||
|
##### Related topics:
|
||
|
```expander
|
||
|
tag:#dynamic_programming
|
||
|
```
|
||
|
|
||
|
|
||
|
##### Links:
|
||
|
- [Link to problem](https://leetcode.com/problems/triangle/)
|
||
|
___
|
||
|
### Problem
|
||
|
|
||
|
Given a `triangle` array, return _the minimum path sum from top to bottom_.
|
||
|
|
||
|
For each step, you may move to an adjacent number of the row below. More formally, if you are on index `i` on the current row, you may move to either index `i` or index `i + 1` on the next row.
|
||
|
|
||
|
#### Examples
|
||
|
|
||
|
**Example 1:**
|
||
|
|
||
|
```
|
||
|
**Input:** triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
|
||
|
**Output:** 11
|
||
|
**Explanation:** The triangle looks like:
|
||
|
2
|
||
|
3 4
|
||
|
6 5 7
|
||
|
4 1 8 3
|
||
|
The minimum path sum from top to bottom is 2 + 3 + 5 + 1 = 11 (underlined above).
|
||
|
```
|
||
|
|
||
|
**Example 2:**
|
||
|
|
||
|
```
|
||
|
**Input:** triangle = [[-10]]
|
||
|
**Output:** -10
|
||
|
```
|
||
|
|
||
|
#### Constraints
|
||
|
|
||
|
- `1 <= triangle.length <= 200`
|
||
|
- `triangle[0].length == 1`
|
||
|
- `triangle[i].length == triangle[i - 1].length + 1`
|
||
|
- `-104 <= triangle[i][j] <= 104`
|
||
|
|
||
|
### Thoughts
|
||
|
|
||
|
> [!summary]
|
||
|
> This is a #dynamic_programming problem.
|
||
|
|
||
|
Same as in [[Leetcode House-Robber]], there are four stages to optimization:
|
||
|
|
||
|
#### Stage 1: ordinary recursion
|
||
|
|
||
|
#### Stage 2: recursion with caching
|
||
|
|
||
|
### Solution
|