[11]盛バックル力最も水容器

まず、対象の説明:

あなたは、各座標の数を表す非負整数nはA1、A2、...、点(I、愛)を得ました。垂直座標内の動画n行、私は2つのエンドポイントは、(i、AI)及び(I、0)は垂直線です。x軸の構成は、水を収容できるように一緒に容器を有する2本のラインを見つけます。

注:あなたは、コンテナを傾けることができない、とnの値が2以上です。

ここに画像を挿入説明

図の縦線は、入力配列[1,8,6,2,5,4,8,3,7]です。この場合、水を保持することができる最大のコンテナ49の(青色で示します)。

例:

输入:[1,8,6,2,5,4,8,3,7]
输出:49

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/container-with-most-water
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

第二に、問題解決のアイデア:

ダブルポインタ、左端の要素を左点、右端の要素を右点ので、各要素が中間値に移動させることが小さい場合、各記録領域(右<左)、満たされないサイクルが終了し、最大値を返します。

第三に、コード説明:

class Solution {
    public int maxArea(int[] height) {
        if(height.length==0||height.length==1){
            return 0;
        }
       int left=0;
       int right=height.length-1;
       int max=0;
       int high=0;
       while(left<right){
          int width=right-left;
          //左边的元素值小,向中间移动,右边不动。
           if(height[left]<height[right]){
               high=height[left];
               left++;
           }
           else{
                high=height[right];
               right--;
           }
           //计算面积最大值
            max=max>(width*high)?max:(width*high);
       }
       return max;
    }
}
公開された75元の記事 ウォン称賛14 ビュー1892

おすすめ

転載: blog.csdn.net/qq_45328505/article/details/104813259