Skip to content

Commit d6314b0

Browse files
authored
Create 659-split-array-into-consecutive-subsequences.js
1 parent 2b0afbe commit d6314b0

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*/
5+
const isPossible = function(nums) {
6+
const freq = new Map()
7+
const build = new Map()
8+
for (let el of nums) {
9+
freq.has(el) ? freq.set(el, freq.get(el) + 1) : freq.set(el, 1)
10+
}
11+
for (let item of nums) {
12+
if (freq.get(item) === 0) continue
13+
else if (getOrDefault(build, item) > 0) {
14+
build.set(item, build.get(item) - 1)
15+
build.set(item + 1, getOrDefault(build, item + 1) + 1)
16+
} else if (getOrDefault(freq, item + 1) > 0 && getOrDefault(freq, item + 2) > 0) {
17+
freq.set(item + 1, freq.get(item + 1) - 1)
18+
freq.set(item + 2, freq.get(item + 2) - 1)
19+
build.set(item + 3, getOrDefault(build, item + 3) + 1)
20+
} else return false
21+
freq.set(item, freq.get(item) - 1)
22+
}
23+
return true
24+
}
25+
26+
function getOrDefault(map, key) {
27+
return map.get(key) || 0
28+
}

0 commit comments

Comments
 (0)