1. 程式人生 > 其它 >程式碼隨想錄訓練營第五十八章|單調棧

程式碼隨想錄訓練營第五十八章|單調棧

今天是訓練營第五十八天,是最後一天單調棧的開始

 

739. 每日溫度 

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] res = new int[n];
        int[] stack = new int[n];
        int top = -1;
        for(int i = n-1; i>=0; i--){
            while(top >=0 &&temperatures[stack[top]]<=temperatures[i]){
                top
--; } res[i] = top == -1 ? 0: stack[top] -i; stack[++top] = i; } return res; } }

單調棧的模版題

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; } }

題意比較難理解,要轉化為單調棧問題

明天繼續單調棧