演算法練習 接雨水問題

2021-10-04 18:27:46 字數 533 閱讀 9410

**

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。

示例:

輸入: [0,1,0,2,1,0,1,3,2,1,2,1] 輸出: 6

**

先找出最高的柱子,然後從兩邊向其遍歷,如果後乙個高度比前乙個柱子高度低,則可以存水,存水量是兩根柱子的差值

public

static

inttrp

(integer[

] height)

else

}return water;

}

::這個題因該是困難題中最簡單的,不過在**書寫上需要注意,如果按照平常的平鋪方法理解問題然後寫**,那麼就需要三個方法(找最高柱子,從左開始遍歷,從右開始遍歷),將三個演算法綜合到一起,就得到上面**,**量相對來說少很

演算法 接雨水

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。示例 1 輸入 height 0,1,0,2,1,0,1,3,2,1,2,1 輸出 6 解釋 上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位...

力扣接雨水問題

思路是這樣的,先找到陣列中的最大值,然後在以他為中心,左右分割遍歷陣列,遞迴陣列,總是找最大值,計算 兩個最大值之間的存水量 最後彙總相加即可得出結果.package test public class testcasetwo int reuslt trapleft height,maxinx tr...

接雨水問題 雙指標

暴力法 def rain lis n len lis l max 0 for in range n 記錄每個點為中心,左邊和右邊最高的板高度 r max 0 for in range n for i in range 1,n l max i max l max i 1 lis i 1 for j i...