LeetCode 42 接雨水(4 4打卡)

2021-10-04 17:52:17 字數 1112 閱讀 6116

接雨水

給定 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,...