Читаю книгу "Алгоритмы для начинающих", там есть пример:
Разница стоимостей акций в конкретный день — это число
следующих друг за другом дней, от выбранного нами и в обратном направлении, до того дня, в который стоимость была меньше или равна стоимости в выбранный нами день.
В книге представлен псевдокод, который я на js написал (пока на ES5):
function simpleStockSpan(arr){ //arr- курсы акций.
var result = [];
for(var i = 0; i < arr.length; i++){
var k = 1; //Минимальная разница
var spanEnd = false;
while( i - k >= 0 && !spanEnd ){
if(arr[i - k] <= arr[i]){
k += 1;
}
else{
spanEnd = true;
}
}
result.push(k);
}
return result;
}
Я так и не понял, откуда взялось n*(n+1)/2 из 1+2+...+n? За счет чего в два раза увеличено? От количества циклов что ли? Отчего вдруг в "Неочевидности равенства"появилось от 1 до n
+ от n до 1? Меня реально скосило это объяснение.