57 lines
1.7 KiB
Java
57 lines
1.7 KiB
Java
|
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;
|
||
|
}
|
||
|
}
|