leetcode42 --- trap
生活随笔
收集整理的這篇文章主要介紹了
leetcode42 --- trap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 題目
給定?n?個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。
2 思路
這個題主要是要清楚, 接的最多的雨水總量為一個位置的最高水位減去這個位置的高度(也就是該位置的接水量)的總和, 而每一個位置的最高水位是其左邊最高高度以及其右邊最高高度兩者取其小. 現在的問題變成了怎么確定每一個位置的左邊最高高度和右邊最高高度. 用動態規劃的方法來確定.
代碼:
int trap(vector<int>& height) {int height_size = height.size();int total = 0;if (height_size > 2) {vector<int> left_max(height_size, 0);vector<int> right_max(height_size, 0);left_max[0] = height[0];right_max[height_size - 1] = height[height_size - 1];for (int i = 1; i < height_size; i ++) {left_max[i] = max(left_max[i - 1], height[i]);}for (int i = height_size - 2; i >= 0; i --) {right_max[i] = max(right_max[i + 1], height[i]);total += min(left_max[i], right_max[i]) - height[i];}}return total; }?
總結
以上是生活随笔為你收集整理的leetcode42 --- trap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 接口 print_Java-接
- 下一篇: leetcode 10 --- 正则表达