Skip to content

Commit 3410749

Browse files
committed
✨ Add the 2nd solution, an enhancement of the before one
1 parent a83af48 commit 3410749

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/frog-jump/solutions/memoization.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,36 @@ const fragJump1 = (n: number, heights: number[]): number => {
2020

2121
return Math.min(jumpOne, jumpTwo);
2222
};
23+
24+
/**
25+
* An Optimized Solution of the above.
26+
*
27+
* @param {number} n
28+
* @param {number[]} heights
29+
* @param {number[]} dp
30+
* @returns {number}
31+
*/
32+
33+
const fragJump2 = (
34+
n: number,
35+
heights: number[],
36+
dp: number[] = Array(n + 1).fill(-1)
37+
): number => {
38+
if (n === 0) {
39+
return 0;
40+
}
41+
42+
if (dp[n] !== -1) return dp[n];
43+
44+
let jumpOne =
45+
fragJump2(n - 1, heights, dp) + Math.abs(heights[n] - heights[n - 1]);
46+
let jumpTwo = Infinity;
47+
48+
if (n > 1) {
49+
jumpTwo =
50+
fragJump2(n - 2, heights, dp) + Math.abs(heights[n] - heights[n - 2]);
51+
}
52+
53+
dp[n] = Math.min(jumpOne, jumpTwo);
54+
return dp[n];
55+
};

0 commit comments

Comments
 (0)