Skip to content

Commit af277b8

Browse files
committed
pref: Optimize space complexity
remove the Array from the algo and used two flag varible to calculate last two numbers & optimize the sapce complexity O(n) to O(1)
1 parent 0fdd474 commit af277b8

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

Dynamic-Programming/FibonacciNumber.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ const fibonacci = (N) => {
99
if (!Number.isInteger(N)) {
1010
throw new TypeError('Input should be integer')
1111
}
12-
13-
// creating array to store values
14-
const memo = new Array(N + 1)
15-
memo[0] = 0
16-
memo[1] = 1
17-
for (let i = 2; i <= N; i++) {
18-
memo[i] = memo[i - 1] + memo[i - 2]
12+
13+
// memoize the last two numbers
14+
let firstNumber = 0
15+
let secondNumber = 1
16+
17+
for (let i = 1; i < N; i++) {
18+
const sumOfNumbers = firstNumber + secondNumber
19+
// update last two numbers
20+
firstNumber = secondNumber
21+
secondNumber = sumOfNumbers
1922
}
20-
return memo[N]
23+
24+
return N ? secondNumber : firstNumber
2125
}
2226

2327
export { fibonacci }

0 commit comments

Comments
 (0)