https://leetcode.com/problems/decompress-run-length-encoded-list/description/ | Easy |
---|
Дан массив целых чисел nums
, представляющий сжатый список. Каждая пара чисел [freq, val]
означает, что значение val
повторяется freq
раз.
Распакуйте список и верните его.
Input:
[1, 2, 3, 4]Output:
[2, 4, 4, 4]Explanation:
1 раз число 2, затем 3 раза число 4.
Input:
[1, 1, 2, 3]Output:
[1, 3, 3]
fun decompressRLElist(nums: IntArray): IntArray {
var totalLength = 0
var i = 0
// Сначала вычисляем общую длину результирующего массива
while (i < nums.size) {
totalLength += nums[i] // nums[i] — это freq
i += 2 // Переходим к следующей паре
}
// Создаём массив нужной длины
val result = IntArray(totalLength)
var index = 0
i = 0
// Проходим по каждой паре [freq, val]
while (i < nums.size) {
val freq = nums[i]
val value = nums[i + 1]
// Заполняем result значением value freq раз
repeat(freq) {
result[index++] = value
}
i += 2 // Переход к следующей паре
}
return result
}
O(n)
, где n
— длина исходного массива.
O(m)
, где m
— длина распакованного массива.