Medium
,Array
,Stack
Given an array of integers temperatures
represents the daily temperatures, return an array answer
such that answer[i]
is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0
instead.
Example 1:
Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,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]
Constraints:
temperatures.length
<= 105temperatures[i]
<= 100
function dailyTemperatures(temperatures) {
const result = [];
for (let i = 0; i < temperatures.length; i++) {
result[i] = 0;
}
const stack = [];
for (let i = 0; i < temperatures.length; i++) {
while (stack.length && temperatures[i] > temperatures[stack[stack.length - 1]]) {
const current = stack.pop();
result[current] = i - current;
}
stack.push(i); // 只存index就可以了
}
return result;
}
Marsgoat Dec 18, 2022
public class Solution {
public int[] DailyTemperatures(int[] temperatures) {
int[] output = new int[temperatures.Length];
for (int i = temperatures.Length - 1; i >= 0; i--) {
int j = i + 1;
while (j < temperatures.Length) {
if (temperatures[j] > temperatures[i]) {
output[i] = j - i;
break;
}
j += Math.Max(1, output[j]);
}
}
return output;
}
}