【LeetCode笔记】11.盛最多水的容器(Java、双指针法)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】11.盛最多水的容器(Java、双指针法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 代碼 & 解題思路
題目描述
- 無
代碼 & 解題思路
- 思路:使用左右兩個指針,不斷縮小范圍,并在每次縮小的過程對最大值進行更新。
- 代碼實現不難,主要是弄明白為啥這樣做就能得到正確的值
- 簡單描述就是:每次舍棄掉上圖中的一根“柱子”,選擇左右指針中較矮的柱子。
- 為什么呢?因為對于被舍棄的柱子,它已經完成了它的任務,即“獲取該柱子能組合出的最大的容器值”。之后另外一個指針無論如何再向舍棄柱子方向移動,都不可能再取得更大的值了(因為容器實際高度按照小了算),所以可以縮小左右指針容納的范圍。
- 時間復雜度 O(n),即使遍歷一次數組
- 空間復雜度 O(1)
總結
以上是生活随笔為你收集整理的【LeetCode笔记】11.盛最多水的容器(Java、双指针法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode笔记】88. 合并两个
- 下一篇: sun 些命令可以将服务器设置至ok模式