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

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

 今天是第五十九天,有經典的接雨水問題

 

●  503.下一個更大元素II 

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        if(nums == null || nums.length <= 1) {
            return new int[]{-1};
        }
        int size = nums.length;
        int[] result = new int[size];
        Arrays.fill(result,-1);
        Stack<Integer> st= new
Stack<>(); for(int i = 0; i < 2*size; i++) { while(!st.empty() && nums[i % size] > nums[st.peek()]) { result[st.peek()] = nums[i % size]; st.pop(); } st.push(i % size); } return result; } }

一樣的模版題

●  42. 接雨水 

class Solution {
    public int trap(int[] height) {
        int left = 0,right = height.length - 1;
        int maxLeft = 0,maxRight = 0;
        int ans = 0;
        while(left < right) {
            maxLeft = Math.max(maxLeft,height[left]);
            maxRight = Math.max(maxRight,height[right]);
            
if(maxLeft < maxRight) { ans += maxLeft - height[left]; left++; }else { ans += maxRight - height[right]; right--; } } return ans; } }

不太會,之後再複習

今天的單調棧完成,明天是最後一天了,加油