双指针

双指针这个用法还不少,还有常见的快慢指针,具体什么时候用我还没总结出来

  • 盛最多水的容器

思路就是利用两个指针,一个从左,一个从右,向中间遍历,来求得最大面积

class Solution {
public:
    int less(vector<int> &height,int l,int r){
        return   height[l]<=height[r] ?height[l]:height[r] ;
    }

    int maxArea(vector<int>& height) {
        int l=0,r=height.size()-1;
        int max=(r-l)*less(height,l,r);
        while(l<r){
            if(height[l]<=height[r]){
                l++;
                int tmp=(r-l)*less(height,l,r);
                if(tmp>max) max=tmp;
            }else{
                r--;
                int tmp=(r-l)*less(height,l,r);
                if(tmp>max) max=tmp;
            }
        }
        return max;
    }
    
};