-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhowSum.js
More file actions
23 lines (22 loc) · 756 Bytes
/
howSum.js
File metadata and controls
23 lines (22 loc) · 756 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const howSum = (targetSum, numbers, cache = { arr: [] }) => {
if (targetSum in cache) return cache[targetSum]
if (targetSum === 0) return []
if (targetSum < 0) return null
for (let num of numbers) {
let remainder = targetSum - num;
let remainderResult = howSum(remainder, numbers, cache)
if (remainderResult != null) {
// cache.arr.push(num)
cache[targetSum] = [...remainderResult, num];
return cache[targetSum]
}
}
// cache.arr=[]
cache[targetSum] = null
return null
}
console.log(howSum(50, [1, 2, 4]))
console.log(howSum(7, [5, 3, 4, 7]))
console.log(howSum(8, [2, 5, 3, 7]))
console.log(howSum(300, [7, 14]))
// console.log(howSum(40,100))