problems: add „659. Split Array into Consecutive Subsequences“

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2022-08-19 22:33:11 +02:00
parent 1ccb92b8a7
commit 6eb2f09892
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,37 @@
class Solution {
private fun getFrequencies(nums: IntArray): MutableMap<Int, Int> {
val freqs = mutableMapOf<Int, Int>()
nums.forEach {
freqs[it] = 1 + freqs.getOrDefault(it, 0)
}
return freqs
}
fun isPossible(nums: IntArray): Boolean {
val frequencies = getFrequencies(nums)
val sortedNumbers = frequencies.keys.toList().sorted()
sortedNumbers.forEach {
while (frequencies[it]!! > 0) {
var last = 0
var j = it
var k = 0
while (frequencies.getOrDefault(j, 0) >= last) {
last = frequencies[j]!!
frequencies[j] = frequencies[j]!! - 1
j++
k++
}
if (k < 3) {
return false
}
}
}
return true
}
}