學習路線/雙指標

11. 盛最多水的容器

Medium

Container With Most Water

ArrayTwo Pointers

題目描述

給定 n 個非負整數 height[0..n-1],每個整數代表一條垂直線的高度。選擇兩條線與 x 軸構成容器,使其能盛最多的水。求最大盛水量。

LeetCode 11原題連結 →

解法思路

  1. 使用左右雙指針從陣列兩端開始
  2. 計算當前面積 = min(height[left], height[right]) × (right - left)
  3. 移動較矮的那一側指針(因為移動較高側不可能增加面積)
  4. 持續更新最大面積,直到兩指針相遇

複雜度分析

  • 時間複雜度:O(n)
  • 空間複雜度:O(1)

高度陣列視覺化

1[0]L
8[1]
6[2]
2[3]
5[4]
4[5]
8[6]
3[7]
7[8]R
目前最大盛水量:0
演算法開始。左指針 L=0,右指針 R=8。兩端向中間夾擠。
1 / 18