● 739. 每日温度
class Solution { public int[] dailyTemperatures(int[] temperatures) { int lens = temperatures.length; int []res = new int[lens]; Deque<Integer> stack = new LinkedList<>(); for(int i =0;i<lens;i++){ while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){ res[stack.peek()] = i - stack.peek(); stack.pop(); } stack.push(i); } return res; } }
● 496.下一个更大元素 I
class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { HashMap<Integer,Integer> map = new HashMap<>(); for(int i = 0;i<nums1.length;i++){ map.put(nums1[i],i); } int[] res = new int[nums1.length]; Stack<Integer> stack = new Stack<>(); Arrays.fill(res,-1); for(int i = 0;i<nums2.length;i++){ while(!stack.isEmpty() && nums2[stack.peek()] < nums2[i]){ int pre = nums2[stack.pop()]; if(map.containsKey(pre)){ res[map.get(pre)] = nums2[i]; } } stack.push(i); } return res; } }