11. 盛最多水的容器

    科技2024-07-23  65

    题目

    截图来自官方

     

    代码

    class Solution { // 自己想的最常规的方法,就是按顺序全部遍历一遍,然后每次计算时用小的那个数字当高。每次算出面积后都和当前保存的res比较下,大于时替换,最终返回。 // public int maxArea(int[] height) { // int res=0; // for(int i=0;i<height.length-1;i++){ // for(int j=i+1;j<height.length;j++){ // int min=Math.min(height[i],height[j]); // int area=min*(j-i); // if(area>res){ // res=area; // } // } // } // return res; // } // 官方解法,双指针,注意解析中说的“小的那个没有当边界的价值了” public int maxArea(int[] height) { int res=0; int left=0; int right=height.length-1; while(left<right){ int temp=Math.min(height[left],height[right])*(right-left); res=Math.max(res,temp); if(height[left]<height[right]){ left++; }else right--; } return res; } }

     

    Processed: 0.014, SQL: 8