You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
798 B
35 lines
798 B
2 years ago
|
package class38;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
import java.util.Stack;
|
||
|
|
||
|
public class Problem_0739_DailyTemperatures {
|
||
|
|
||
|
public static int[] dailyTemperatures(int[] arr) {
|
||
|
if (arr == null || arr.length == 0) {
|
||
|
return new int[0];
|
||
|
}
|
||
|
int N = arr.length;
|
||
|
int[] ans = new int[N];
|
||
|
Stack<List<Integer>> stack = new Stack<>();
|
||
|
for (int i = 0; i < N; i++) {
|
||
|
while (!stack.isEmpty() && arr[stack.peek().get(0)] < arr[i]) {
|
||
|
List<Integer> popIs = stack.pop();
|
||
|
for (Integer popi : popIs) {
|
||
|
ans[popi] = i - popi;
|
||
|
}
|
||
|
}
|
||
|
if (!stack.isEmpty() && arr[stack.peek().get(0)] == arr[i]) {
|
||
|
stack.peek().add(Integer.valueOf(i));
|
||
|
} else {
|
||
|
ArrayList<Integer> list = new ArrayList<>();
|
||
|
list.add(i);
|
||
|
stack.push(list);
|
||
|
}
|
||
|
}
|
||
|
return ans;
|
||
|
}
|
||
|
|
||
|
}
|