Skip to content

Commit 3020ed2

Browse files
committed
dp
1 parent 41f8127 commit 3020ed2

3 files changed

Lines changed: 53 additions & 0 deletions

File tree

Dynamic Programming/DP_ENHANCED.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ def tsp_held_karp(dist):
169169

170170
### 4. Profile/Broken Profile DP
171171

172+
**Grid Direction Heuristic:**
173+
- If movement is effectively one-way along dependencies, such as only right/down or only left/up, it is usually a DP problem.
174+
- If movement is allowed in both directions across those dependencies, such as both right/down and left/up, prefer BFS/graph traversal.
175+
172176
```python
173177
def tile_grid_broken_profile(width, height):
174178
"""
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# https://leetcode.com/problems/fancy-sequence/description/
2+
3+
'''
4+
Write an API that generates fancy sequences using the append, addAll, and multAll operations.
5+
6+
Implement the Fancy class:
7+
8+
Fancy() Initializes the object with an empty sequence.
9+
void append(val) Appends an integer val to the end of the sequence.
10+
void addAll(inc) Increments all existing values in the sequence by an integer inc.
11+
void multAll(m) Multiplies all existing values in the sequence by an integer m.
12+
int getIndex(idx) Gets the current value at index idx (0-indexed) of the sequence modulo 109 + 7. If the index is greater or equal than the length of the sequence, return -1.
13+
14+
15+
Example 1:
16+
17+
Input
18+
["Fancy", "append", "addAll", "append", "multAll", "getIndex", "addAll", "append", "multAll", "getIndex", "getIndex", "getIndex"]
19+
[[], [2], [3], [7], [2], [0], [3], [10], [2], [0], [1], [2]]
20+
Output
21+
[null, null, null, null, null, 10, null, null, null, 26, 34, 20]
22+
23+
Explanation
24+
Fancy fancy = new Fancy();
25+
fancy.append(2); // fancy sequence: [2]
26+
fancy.addAll(3); // fancy sequence: [2+3] -> [5]
27+
fancy.append(7); // fancy sequence: [5, 7]
28+
fancy.multAll(2); // fancy sequence: [5*2, 7*2] -> [10, 14]
29+
fancy.getIndex(0); // return 10
30+
fancy.addAll(3); // fancy sequence: [10+3, 14+3] -> [13, 17]
31+
fancy.append(10); // fancy sequence: [13, 17, 10]
32+
fancy.multAll(2); // fancy sequence: [13*2, 17*2, 10*2] -> [26, 34, 20]
33+
fancy.getIndex(0); // return 26
34+
fancy.getIndex(1); // return 34
35+
fancy.getIndex(2); // return 20
36+
37+
38+
Constraints:
39+
40+
1 <= val, inc, m <= 100
41+
0 <= idx <= 105
42+
At most 105 calls total will be made to append, addAll, multAll, and getIndex.
43+
'''
44+
45+

docs/content/Dynamic Programming/DP_ENHANCED.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ def tsp_held_karp(dist):
169169

170170
### 4. Profile/Broken Profile DP
171171

172+
**Grid Direction Heuristic:**
173+
- If movement is effectively one-way along dependencies, such as only right/down or only left/up, it is usually a DP problem.
174+
- If movement is allowed in both directions across those dependencies, such as both right/down and left/up, prefer BFS/graph traversal.
175+
172176
```python
173177
def tile_grid_broken_profile(width, height):
174178
"""

0 commit comments

Comments
 (0)