給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。
解題思路是,找到所有柱子中最高的(記為max),然後從兩邊,分別向最高的柱子靠攏。遍歷的過程中,需要記錄當前除max外最高的柱子(記為root)。max和root之間的空間,減掉這之間的柱子高度,即為所能接雨水的數量。整個演算法的時間複雜度為o(n)。
**如下:
public int trap(int height)
}int area = 0, root = height[0];
for (int i = 0; i < maxind; ++i) else
}root = height[n - 1];
for (int i = n - 1; i > maxind; --i) else
}return area;
}
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 接雨水
接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 class soluti...
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...