Java stack.pop()返回什么?
我正在尝试以下问题: 给出每日温度列表Java stack.pop()返回什么?,java,algorithm,data-structures,stack,Java,Algorithm,Data Structures,Stack,我正在尝试以下问题: 给出每日温度列表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[] dailyTem
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);
}
}
公共类每日温度{
公共内部[]每日温度(内部[]温度){
int[]res=新的int[温度.长度];
堆栈=新堆栈();
对于(int i=0;itemperatures[stack.peek()]){
int index=stack.pop();//这一行是我的查询
res[index]=i-指数;
}
堆栈推送(i);
}
for(int i:res){
系统输出打印项次(“+i”);
}
返回res;
}
公共静态void main(字符串[]args){
每日温度每日温度=新的每日温度();
int[]temp={73,74,75,71,69,72,76,73};
每日温度。每日温度(temp);
}
}
我在代码中添加了一条注释是的,正如Willem所提到的,从堆栈中删除顶层元素并返回其值。那么你是如何获得索引的呢?您需要注意删除的元素代表什么。在本例中,它表示温度数组中的索引:
stack.push(i);
请注意,它会将i推入温度[i]的内部,因此实际上是在堆栈中存储索引而不是值。代码基本上会将所有索引推入堆栈,当当前温度高于堆栈顶部的温度时,将其移除并标记该索引的答案,即
i-index
(当前日期-温度较低的较早日期).位于堆栈顶部的元素:它也会从堆栈中删除该元素。请看这里,算法已经构建了一个索引堆栈。您将索引放入堆栈,您将从堆栈中获取索引。。。索引只是一个整数,堆栈可以保存整数Thank@juvian..我遗漏了插入数组索引的部分,而不是元素本身…谢谢大家的解释