【代码随想录二刷】day 58 | 739. 每日温度 & 496.下一个更大元素 I

二刷主要记录理解不一样的题

一刷地址:day58

今日题目:简单

**每日温度 **

class Solution {
    public int[] dailyTemperatures(int[] t) {
        int n = t.length;
        Deque<Integer> st = new ArrayDeque<>();
        int[] ans = new int[n];

        for(int i = 0; i < n; i++){
            if(st.isEmpty()) st.push(i);
            else{
                while(!st.isEmpty() && t[i] > t[st.peek()]){
                    int idx = st.poll();
                    ans[idx] = i - idx;
                }
                st.push(i);
            }
        }

        return ans;
    }
}

下一个更大元素 I

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        int n = nums1.length;
        int m = nums2.length;
        int[] ans = new int[n];
        Arrays.fill(ans, -1);
        Deque<Integer> st = new ArrayDeque<>();
        // 找到nums2中,每一个比自己大的元素,存入map
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < m; i++){
            while(!st.isEmpty() && nums2[i] > nums2[st.peek()]){
                int idx = st.poll();
                map.put(nums2[idx], nums2[i]);
            }
            st.push(i);
        }

        for(int i = 0; i < n; i++){
            if(map.containsKey(nums1[i])){
                ans[i] = map.get(nums1[i]);
            }
        }

        return ans;
    }
}

你可能感兴趣的:(代码随想录二刷,leetcode,算法,java)