Я пытался решить следующую проблему:
Учитывая список дневных температур T
, вернуть список такой, что для
каждый день на входе говорит вам, сколько дней вам придется ждать
до более теплой температуры. Если нет будущего дня, для которого это
возможно, вместо этого поставьте 0.
Например, учитывая список температур T = [73, 74, 75, 71, 69, 72, 76, 73]
, вы должны получить [1, 1, 4, 2, 1, 1, 0, 0]
.
Я нашел это решение, которое работает отлично, но я не понимаю, как мы получаем индекс из метода stack.pop()
? Разве он не возвращает значение элемента?
public class DailyTemperatures {
public int[] dailyTemperatures(int[] temperatures) {
int[] res = new int[temperatures.length];
Stack<Integer> stack = new Stack();
for (int i = 0; i < temperatures.length; i++) {
while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
int index = stack.pop();//this line is my query
res[index] = i - index;
}
stack.push(i);
}
for (int i : res) {
System.out.println(" "+ i);
}
return res;
}
public static void main(String[] args) {
DailyTemperatures dailyTemperatures=new DailyTemperatures();
int [] temp={73, 74, 75, 71, 69, 72, 76, 73};
dailyTemperatures.dailyTemperatures(temp);
}
}
Я добавил комментарий в коде