но похоже что в моём решении есть логическая ошибка, не подскажите какая именно?
fun findMinimumTreeSegment(k: Int, trees: List<Int>): Pair<Int, Int> {
var left = 0
var right = 1
val state = mutableMapOf<Int, Int>() // type, frequency
var min = Int.MAX_VALUE
while (right < trees.size) {
state.computeIfPresent(trees[right]) { _, v -> v + 1 }
state.putIfAbsent(trees[right], 1)
while (left != right && state.size == k) {
min = minOf(min, right - left + 1)
state.computeIfPresent(trees[left]) { _, v -> v - 1 }
if (state[trees[left]] == 0)
state.remove(trees[left])
left += 1
if (min == k + 1)
return Pair(minOf(left + 1, trees.size), minOf(right + 1, trees.size))
}
right++
}
return Pair(minOf(left + 1, trees.size), minOf(right + 1, trees.size))
}
Первое дерево не положил?
Судя по всему да, если N, K = 1, то ответ неправильный
Обсуждают сегодня