739. 每日温度
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int len = temperatures.length;
int[] ans = new int[len];
Deque<Integer> dq = new ArrayDeque<Integer>();
for(int i = 0; i < len; ++i) {
if(dq.isEmpty()) {
dq.addLast(i);
}else {
while(!dq.isEmpty() && temperatures[dq.getLast()] < temperatures[i]) {
int a = dq.pollLast();
ans[a] = i - a;
}
dq.addLast(i);
}
}
return ans;
}
}
496.下一个更大元素 I
题目链接:496. 下一个更大元素 I - 力扣(LeetCode)
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
HashMap<Integer,Integer> map = new HashMap<>();
int[] ans = new int[nums1.length];
Deque<Integer> dq = new ArrayDeque<>();
for(int i = 0; i < nums1.length; ++i) {
map.put(nums1[i], i);
ans[i] = -1;
}
for(int i : nums2) {
if(dq.isEmpty()) {
dq.addLast(i);
}else {
while(!dq.isEmpty() && i > dq.peekLast()) {
int a = dq.pollLast();
if(map.containsKey(a)) {
ans[map.get(a)] = i;
}
}
dq.offerLast(i);
}
}
return ans;
}
}
本文介绍了两个LeetCode题目,分别是基于栈的每日温度数组问题,通过deque操作找到每个温度出现后满足条件的后续温度;以及使用哈希映射和双端队列解决下一个更大元素I问题,找到给定数组nums1中每个元素在nums2中的第一个大于它的元素的索引。
1200

被折叠的 条评论
为什么被折叠?



