Я только что столкнулся с этой проблемой и подумал, что попробую, но теперь я застрял и, если возможно, нуждаюсь в помощи.
Проблема, с которой я все еще сталкиваюсь, заключается в том, что мое возвращение обычно уменьшается на 1 или 2, но я не могу понять, почему нет.Я проследил свой код назад, но все еще не могу понять его
Проблема:
Вы должны написать программу, чтобы помочь архитектору нарисовать горизонт города.Здания имеют прямоугольную форму, высота каждого здания представлена элементом в данном массиве.
Вышеупомянутый горизонт выше представлен как [1,3,2,1,2,1,5,3,3,4,2]
ТАК ЧТО ЗДЕСЬ, ЧТО Я РАБОТАЮ С:
const skyline =(H)=> {
let stack = [];
let count = 0;
let height = 0;
const addBlock = (value) => {
if (value > height) {
stack.push(value - height);
height = value;
count += 1;
}
}
const pop = (value) => {
while (value < height) {
height -= stack.pop();
}
if (value > height) {
addBlock(value)
}
}
for (let i = 0; i < H.length; i += 1) {
let value = H[i];
if (value < height) {
pop(value)
} else if (value > height) {
addBlock(value)
}
}
return count
}
skyline([1,3,2,1,2,1,5,3,3,4,2]) //Expect 9
// Тест СЛУЧАИ:
let strokes = [1,3,2,1,2,1,5,3,3,4,2] // Expect 9
// let strokes = [5,8] // Expect 8
// let strokes = [1,1,1,1] // Expect 1
skyline(strokes)