接雨水
給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。
上面是由陣列 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。 感謝 marcos 貢獻此圖。
示例:輸入: [0,1,0,2,1,0,1,3,2,1,2,1]
輸出: 6
class
solution
return ans;
}}
1ms改進
//觀察,其實可以發現,每個可以盛放雨水的陣列「坑位」,都是前邊數比後邊若干數小,
//遍歷陣列,找到每個位置的左右邊最大值,其所盛放的水量就是兩邊最大值的較小值-該位置高度
int len=height.length;
if(len==0)
return0;
int ans=0;
//改進,用空間換時間
//建立兩個陣列,分別存放某位置元素的左邊最大值和右邊最大值
int[
] lm=
newint
[len]
;int
rm=newint
[len]
; lm[0]
=height[0]
; rm[len-1]
=height[len-1]
;for
(int i=
1;i) lm[i]
=math.
max(height[i]
,lm[i-1]
);for(
int i=len-
2;i>=
0;i--
) rm[i]
=math.
max(height[i]
,rm[i+1]
);for(
int i=
1;i1;i++
)return ans;
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...
(LeetCode 42)接雨水 思維題
42.接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,...
LeetCode 42 接雨水 Java實現
給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos貢獻此圖。示例 輸入 0,1,0,2,1,0,1,...