LeetCode/com/zerroi/leetcode/Three27/DailyTemperatures.java

57 lines
1.7 KiB
Java
Raw Normal View History

package com.zerroi.leetcode.Three27;
import java.util.Stack;
public class DailyTemperatures {
public static void main(String[] args) {
SolutionFirst solutionFirst = new SolutionFirst();
int[] res = solutionFirst.dailyTemperatures(new int[]{55, 38, 53, 81, 61, 93, 97, 32, 43, 78});
}
}
class SolutionFirst {
public int[] dailyTemperatures(int[] temperatures) {
int[] next = new int[temperatures.length];
for (int i = 0; i < temperatures.length - 1; i++) {
int top = temperatures[i];
int index = i + 1;
if (temperatures[i + 1] > top) {
next[i]++;
} else {
boolean flag = false;
while (index < temperatures.length) {
if (temperatures[index] > top) {
flag = true;
break;
}
index++;
if (index > 200) {
break;
}
}
if (flag) {
next[i] = index - i;
} else {
next[i] = 0;
}
}
}
return next;
}
public int[] dailyTemperatures2(int[] temperatures) {
int[] next = 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 prevIndex = stack.pop();
next[prevIndex] = i - prevIndex;
}
stack.push(i);
}
return next;
}
}