leetcode--11. 盛最多水的容器(双指针)

记录
19:46 2024-2-15

https://leetcode.cn/problems/container-with-most-water/

利用双指针来解,一个在头,一个在尾,每次最小的那个进行移动,然后计算出容积。

ps:刚开始想到了用单调栈来解决,但这道题和单调栈那个例题还不一样。然后暴力解当然超时了,然后学习到了双指针(..双指针应该挺常见的不过我没想到

点击查看代码
class Solution {
public:
    //暴力
    // int maxArea(vector<int>& height) {
    //     int result = 0;
    //     for(int i = 0; i < height.size() ; i++) {
    //         for(int j = i + 1; j < height.size(); j++) {
    //             if(height[i] <= height[j]) {
    //                 result = max(result, (j - i) * height[i]);
    //             } else {
    //                 result = max(result, (j - i) * height[j]);
    //             }
    //         }
    //     }
    //     return result;
    // }

    int maxArea(vector<int>& height) {
        int result = 0;
        // 双指针
        int i = 0, j = height.size() - 1;
        while(i < j) {
            result = max(result, min(height[i], height[j]) * (j - i));
            if(height[i] < height[j]) i++;
            else j--;
        }
        return result;
    }
};
posted @ 2024-02-15 19:50  57one  阅读(6)  评论(0编辑  收藏  举报