【LeetCode笔记】42. 接雨水(Java、动态规划)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】42. 接雨水(Java、动态规划)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 題目描述
- 代碼 & 思路
- 方法一:暴力法
- 方法二:動(dòng)態(tài)規(guī)劃
題目描述
- 當(dāng)前列有水判斷:左邊最高列 & 右邊最高列的短板不小于當(dāng)前列
代碼 & 思路
方法一:暴力法
- 對(duì)于每一列O(n),都找出左邊最高列O(n),和右邊最高列O(n),然后進(jìn)行積水判斷。
- 時(shí)間復(fù)雜度O(n2n^2n2)
方法二:動(dòng)態(tài)規(guī)劃
- 在方法一的基礎(chǔ)上進(jìn)行
- 方法一每次都要找一遍左右兩邊的最高列,但是實(shí)際上一次循環(huán)就能找完O(n)
- 動(dòng)態(tài)規(guī)劃數(shù)組rMax[n],lMax[n],分別代表當(dāng)前i的右邊最高列、左邊最高列
- 對(duì)于height[i]來說,右邊最高列要么是height[i+1],要么是rMax[i+1],以此類推。
- 時(shí)間復(fù)雜度O(n*3) = O(n)
總結(jié)
以上是生活随笔為你收集整理的【LeetCode笔记】42. 接雨水(Java、动态规划)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logminer java_使用Orac
- 下一篇: 【LeetCode笔记】4. 寻找两个正