題目描述
給定 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
題目分析1、我們可以按列進行分析,用乙個迴圈來迴圈每一列
2、迴圈到第i列的時候,左邊有乙個最大值max_left和右邊右邊有乙個最大值max_right,我們可以發現,只有當height[i]都小於上面的這兩個值的時候才會有雨水積累
3、寫出**,可以發現max_left我們可以在遍歷height的時候就可以隨手記錄,但max_right卻需要不斷的迴圈
//**1
class
solution}if
((max_left>height[i])&&
(max_right>height[i]))
if(height[i]
>max_left) max_left=height[i];}
return res;
}}
由於上面的max_right需要我們每次迴圈進行判斷,所以我們在想能不能max_right和max_left一樣,僅僅遍歷一遍就可以確定它的值
1、在右邊高的時候從左往右遍歷
2、在左邊高的時候從右往左遍歷
//**2:雙指標法
class
solution
left++;}
else
right--;}
}return res;
}}
(LeetCode 42)接雨水 思維題
42.接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,...
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 接雨水 Java實現
給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos貢獻此圖。示例 輸入 0,1,0,2,1,0,1,...