739. Daily Temperatures (Medium) (https://leetcode.com/problems/daily-temperatures/)

Дан массив целых чисел temperatures, представляющий дневные температуры. Верните массив answer такой, что answer[i] — это количество дней, которые нужно подождать после i-го дня, чтобы получить более тёплую температуру. Если такого будущего дня не существует, оставьте answer[i] == 0. Ограничения: - 1 <= temperatures.length <= 10^5 - 30 <= temperatures[i] <= 100

function dailyTemperatures(temperatures: number[]): number[] {
  const n = temperatures.length
  const answer: number[] = new Array(n).fill(0) // по умолчанию 0
  const stack: number[] = [] // храним ИНДЕКСЫ
 
  for (let i = 0; i < n; i++) {
    // Пока стек не пуст И текущая температура ВЫШЕ температуры на верхушке
    while (stack.length > 0 && temperatures[i] > temperatures[stack.at(-1)!]) {
      const topIdx = stack.pop()!
      answer[topIdx] = i - topIdx // расстояние между индексами
    }
    stack.push(i)
  }
 
  return answer
}
 
// Local check:
console.log(dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73])) // [1,1,4,2,1,1,0,0]
console.log(dailyTemperatures([30, 40, 50, 60])) // [1,1,1,0]
console.log(dailyTemperatures([30, 60, 90])) // [1,1,0]
 
// function dailyTemperatures(temperatures: number[]): number[] {
//   const answer: number[] = [];
 
//   for (let i = 0; i < temperatures.length; i++) {
//     let j = i + 1;
//     let cnt = 1;
 
//     while (j < temperatures.length && temperatures[i] >= temperatures[j]) {
//       cnt++;
//       j++;
//     }
 
//     answer.push(j < temperatures.length ? cnt : 0);
//   }
 
//   return answer;
// }
Example 1:
 
    Input: temperatures = [73,74,75,71,69,72,76,73]
    Output: [1,1,4,2,1,1,0,0]
    Explanation:
    Day 0 (73): next warmer is day 1 (74) -> wait 1 day
    Day 1 (74): next warmer is day 2 (75) -> wait 1 day
    Day 2 (75): next warmer is day 6 (76) -> wait 4 days
    Day 3 (71): next warmer is day 5 (72) -> wait 2 days
    Day 4 (69): next warmer is day 5 (72) -> wait 1 day
    Day 5 (72): next warmer is day 6 (76) -> wait 1 day
    Day 6 (76): no warmer day -> 0
    Day 7 (73): no warmer day -> 0
 
Example 2:
 
    Input: temperatures = [30,40,50,60]
    Output: [1,1,1,0]
 
Example 3:
 
    Input: temperatures = [30,60,90]
    Output: [1,1,0]

645-set-mismatch 1475 — тот же monotonic stack patterns leetcode