|
文章目录
- 题目背景
- 盛水最多的容器
- C++解法
- Python解法

题目背景
如果大家对于 双指针 的概念并不熟悉, 可以先看我之前为此专门写的算法详解:
蓝桥杯算法竞赛系列第七章——六道力扣经典带你刷爆双指针
盛水最多的容器
题目链接: 盛水最多的容器
解题思路:
用 left 和 right 两个指针从两端向中心收缩,一边收缩一边计算 [left, right] 之间的矩形面积,取最大的面积值即是答案.
代码详解:
C++解法
class Solution {
public:int maxArea(vector<int>& height) {// 定义双指针 - 前后指针int left = 0, right = height.size() - 1;int res = 0; // 记录结果while(left < right){// [left, right]之间的矩形面积int cur_area = min(height[left], height[right]) * (right - left);res = max(res, cur_area);// 移动双指针 - 高度低的一端移动if(height[left] < height[right])left++;elseright--;} return res;}
};
Python解法
class Solution:def maxArea(self, height: List[int]) -> int:# 定义双指针 - 前后指针left, right = 0, len(height) - 1# 记录结果res = 0while left < right:# [left, right] 之间的矩形面积cur_area = min(height[left], height[right]) * (right - left)res = max(res, cur_area)# 移动双指针 - 移动较低的一端if height[left] < height[right]:left += 1else:right -= 1return res
|
|