Skip to content

Commit 1b1fed4

Browse files
authored
Create 1449-form-largest-integer-with-digits-that-add-up-to-target.js
1 parent 1a045c0 commit 1b1fed4

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number[]} cost
3+
* @param {number} target
4+
* @return {string}
5+
*/
6+
const largestNumber = function(cost, target) {
7+
const m = new Map()
8+
const res = dfs(cost, 1, target, m)
9+
return res.indexOf('0') !== -1 ? '0' : res
10+
};
11+
function dfs(cost, index, remain, m) {
12+
if(remain === 0) return ''
13+
if(remain < 0 || index === cost.length + 1) return '0'
14+
const k = `${index}-${remain}`
15+
if(m.has(k)) return m.get(k)
16+
const take = '' + index + dfs(cost, 1, remain - cost[index - 1], m)
17+
const skip = dfs(cost, index + 1, remain, m)
18+
const res = getBigger(take, skip)
19+
m.set(k, res)
20+
return res
21+
}
22+
function getBigger(num1, num2) {
23+
if(num1.indexOf('0') !== -1) return num2
24+
if(num2.indexOf('0') !== -1) return num1
25+
if(num1.length > num2.length) return num1
26+
else if(num1.length < num2.length) return num2
27+
else return num1 > num2 ? num1 : num2
28+
}

0 commit comments

Comments
 (0)