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...