本文主要是介绍代码随想录算法训练营Day60|单调栈01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码随想录算法训练营Day60|单调栈01
文章目录
- 代码随想录算法训练营Day60|单调栈01
- 一、739. 每日温度
- 二、496.下一个更大元素 I
一、739. 每日温度
class Solution {public int[] dailyTemperatures(int[] temperatures) {//单调栈int lens=temperatures.length;int result[]=new int[lens];Deque<Integer> stack=new LinkedList<>();stack.push(0);for(int i=0;i<lens;i++){if(temperatures[i]<=temperatures[stack.peek()]){stack.push(i);}else{
while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){result[stack.peek()]=i-stack.peek();stack.pop();}stack.push(i);}}return result;}
}
二、496.下一个更大元素 I
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {Stack<Integer> temp = new Stack<>();int[] res = new int[nums1.length];Arrays.fill(res,-1);HashMap<Integer, Integer> hashMap = new HashMap<>();for (int i = 0 ; i< nums1.length ; i++){hashMap.put(nums1[i],i);}temp.add(0);for (int i = 1; i < nums2.length; i++) {if (nums2[i] <= nums2[temp.peek()]) {temp.add(i);} else {while (!temp.isEmpty() && nums2[temp.peek()] < nums2[i]) {if (hashMap.containsKey(nums2[temp.peek()])){Integer index = hashMap.get(nums2[temp.peek()]);res[index] = nums2[i];}temp.pop();}temp.add(i);}}return res;}
}
这篇关于代码随想录算法训练营Day60|单调栈01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!