4.最大容器问题

1.问题描述

2.分析问题

如何从下面选出两个竖线,这样组合出来的容器能装的液体最多。直观考虑就是把所有的组合可能能遍历一遍,不过这样的时间复杂度就比较高,为O(n^2).仔细考虑可以发现,如果两边往中间靠拢,假如当前处在左i与右j的位置,那么如果挪动一下的话,只能是较小的一边往内缩才有机会变成最大容器(可以琢磨一下,如果大的一边还往里缩,那么下一个容器的高肯定小于等于上一个小边,而且长度变小了,必然导致容量减少)。

4.最大容器问题_第1张图片

3.代码

    int maxArea(vector &height) 
    {
        int right=height.size()-1;
        int left=0;
        int result=0;
        while(left

 

你可能感兴趣的:(数据结构与算法)