diff --git a/OJ notes/pages/Leetcode Triangle.md b/OJ notes/pages/Leetcode Triangle.md new file mode 100644 index 0000000..80304ca --- /dev/null +++ b/OJ notes/pages/Leetcode Triangle.md @@ -0,0 +1,69 @@ +# 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