function countContiguousDistinct(k, arr) {
const numsCount = {};
for(let i = 0; i < k - 1; i++) {
const curr = arr[i];
numsCount[curr] = (numsCount[curr] ?? 0) + 1;
}
const result = [];
let count = Object.keys(numsCount).length;
for(let start = 0, end = k - 1; end < arr.length; start++, end++) {
const first = arr[start];
const last = arr[end];
numsCount[last] = (numsCount[last] ?? 0) + 1;
if(numsCount[last] === 1) {
count++;
}
result.push(count);
numsCount[first]--;
if(numsCount[first] === 0) {
count--;
}
}
return result;
}
Просто вы все говорите так будто С++ это бездонная яма, в которую если забраться, то уже не выберешься, а потому и лезть туда не стоит.
Естественно перед этим изучив с++ до чуть-ли не идеального совершенства.
Наверное вы не сказали самое главное - что такие функции не загрязняют глобальное пространство имен
Вот примерно так он бы выглядел в реальности:
На порядок читабельнее, правда?