码迷,mamicode.com
首页 > 其他好文 > 详细

每日温度

时间:2021-06-28 19:54:53      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:empty   大于等于   ble   ret   http   ++   i++   break   ISE   

https://leetcode-cn.com/problems/daily-temperatures/

思路1: 使用单调递减栈

public int[] dailyTemperatures(int[] T) {
if (T == null || T.length == 0) return null;
int[] values = new int[T.length];
for (int i = T.length - 2; i >= 0; i--) {
int j = i + 1;
while (true) {
if (T[i] < T[j]) {
values[i] = j - i;
break;
} else if (values[j] == 0) {
values[i] = 0;
break;
}
// 当T[i] == T[j]的时候
j = j + values[j];
}
}
return values;
}

public int[] dailyTemperatures1(int[] T) {
if (T == null || T.length == 0) return null;
int[] values = new int[T.length];
for (int i = T.length - 2; i >= 0; i--) {
int j = i + 1;
while (true) {
if (T[i] < T[j]) {
values[i] = j - i;
break;
} else if (values[j] == 0) {
values[i] = 0;
break;
} else if (T[i] == T[j]) {
values[i] = values[j] + j - i;
break;
} else {
j = j + values[j];
}
}
}
return values;
}

public int[] dailyTemperatures2(int[] T) {
if (T == null || T.length == 0) return null;
int[] result = new int[T.length];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < T.length; i++) {
// 这里应该要写大于,不要写大于等于
while (!stack.isEmpty() && T[i] > T[stack.peek()]) {
result[stack.peek()] = i - stack.peek();
stack.pop();
}
stack.push(i);
}
return result;
}

每日温度

标签:empty   大于等于   ble   ret   http   ++   i++   break   ISE   

原文地址:https://www.cnblogs.com/syh918/p/14940611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!