leetcode42 接雨水 棧實現

2021-10-01 16:25:10 字數 535 閱讀 8015

public static int trap(int height) 

stackstack = new stack<>();

//對陣列中每乙個元素遍歷

for (int i = 0; i <= height.length - 1; i++)

//取出的last和左右兩面牆的最低求差

x = math.min(height[stack.peek()], height[i]) - last;

//求last和當前元素的距離用來相乘

//為什麼要求x?比如第一次取棧頂是1,則兩個陣列距離是1,如果是第二次遍歷距離就是2了

int distinct = i - stack.peek() - 1;

sum += x * distinct;

}//將當前的下表存入棧中,注意是指標,為什麼用指標,因為stack只有取棧頂的方法,而本次需要取棧第二高的數,所以存下標

stack.push(i);

}return sum;

}

Leetcode 42 接雨水(棧解)

題目描述 定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 示例 輸入 0,1,0,2,1,0,1,3,2,1,2,1 ...

leetcode 42 接雨水 單調棧

接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,2,1...

LeetCode 42 接雨水 困難

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,2,1,0,1...