天际线问题
buildings = [6,3,5,2,2,3]
右边是大海,哪些楼能看到大海
function getSkyLine(buildings) {
const length = buildings.length;
let flag = buildings[length - 1];
const result = [buildings[length - 1]]
// 从右往左遍历,倒着遍历, 动态改变flag , 第一个flag 是最右边的
for (i = length; i >= 0; i--) {
if (buildings[i] > flag) {
flag = buildings[i];
result.push(flag)
}
}
return result.reverse()
}
console.log(getSkyLine([6,3,5,2,2,3]))
最后一个肯定能看到大海,最后一个定为flag, 后面遇到大数,再把大数变成flag,把flag全收集起来。 倒着遍历,for(i=length;i>=0;i--),随着遍历,改变flag,收集flag, 最后result.reverse()