原题:#739_每日温度
- 题目翻译:求出数组中元素与下一个比它大的元素之间的距离
- 思路:
- 使用栈存放数组下标
- 遍历数组中的元素并把它放入栈中
- 放入栈前,如果栈不为空,比较当前节点的值与栈中下标对应数组中的值,如果当前的值较大,则说明当前元素为栈顶元素的下一个比它大的值,计算两者下标距离
- 如果当前值不比栈顶的值大,则把当前值的下标入栈
public int[] dailyTemperatures(int[] T) {
int len = T.length;
int[] dist = new int[len];
Stack<Integer> indexs = new Stack<>();
for (int curIndex = 0; curIndex < len; curIndex++) {
while (!indexs.isEmpty() && T[curIndex] > T[stack.peek()]) {
int preIndex = peek.pop();
dist[preIndex] = curIndex - preIndex;
}
indexs.add(curIndex);
}
return dist;
}