題目: LeetCode - 11. Container With Most Water

題目說明

給一個陣列代表容器的兩邊長,求最大容積。

解題思路

使用雙指針即可,而移動指針時只需要移動長度較小的指針即可。

參考解法

c++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// fast IO
static auto __ = []()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
return 0;
}();
class Solution {
public:
int maxArea(vector<int>& height) {
int n = height.size(), m = INT_MIN, l = 0, r = n - 1, L, W;
while(l < r)
{
L = min(height[l], height[r]);
W = r - l;
m = max(m, L * W);
height[l] > height[r] ? --r : ++l;
}
return m;
}
};