代码随想录算法训练营天 第九章 五十八天| 739. 每日温度 496.下一个更大元素 I
739. 每日温度
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int len = temperatures.length;
int[] result = new int[len];
Deque<Integer> queue = new LinkedList<>();
queue.push(0);
for (int i = 1; i < len; i++) {
if (temperatures[i] <= temperatures[queue.peek()]) {
queue.push(i);
} else {
while (!queue.isEmpty() && temperatures[i]>temperatures[queue.peek()]){
result[queue.peek()] = i - queue.peek();
queue.pop();
}
queue.push(i);
}
}
return result;
}
}
496.下一个更大元素 I
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int len1 = nums1.length;
int len2 = nums2.length;
int[] result = new int[len1];
if (len1 == 0) {
return result;
}
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < len1; i++) {
result[i] = -1;
map.put(nums1[i],i);
}
Stack<Integer> stack = new Stack<>();
stack.push(0);
for (int i = 1; i < len2; i++) {
if (nums2[i] <= nums2[stack.peek()]) {
stack.push(i);
} else {
while (!stack.isEmpty() && nums2[i] > nums2[stack.peek()]) {
if (map.containsKey(nums2[stack.peek()])){
result[map.get(nums2[stack.peek()])] = nums2[i];
}
stack.pop();
}
stack.push(i);
}
}
return result;
}
}