毎日1題LeetCode[8日目]

2275 ワード

毎日1題LeetCode[8日目]
Container with Most water
Description:
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container and n is at least 2.

Subscribe to see which companies asked this question.

日语原文:
  n       ,       (i,ai)。   n            ,           (i,ai),(i,0)。      ,     x         ,            。
   :           n     2

問題解決の考え方:
  • 第一選択テーマは最初からまた見間違えました...後で文章はすべて手動で中国語に翻訳して、英語の読解能力を高めます.
  • 問題の意味が分かった後、問題の意味は最大面積の矩形を探すことで、大体の構想は以下の通りです:両側から中に迫って、それから一歩ごとにどのように前進しますか?これははっきり考えなければなりません.両側は動いていますか.考えてみると、両端の対応する高さが異なる場合、最大のエッジを見つけるために、最小の高さの一端の距離を変化させるべきではないか、各ステップが最大の矩形の最大可能な次の矩形であることを保証することができます.この考えに従って、コードを引っ張って、top solution:
  • を参考にします.
    Javaコード:
    public int maxArea(int [] height){
            int maxArea=0;
            int left=0,right=height.length-1;
            while (left<right){
                maxArea=Math.max(maxArea,Math.min(height[left],height[right])*(right-left));
                if(height[left]>height[right]){
                    right--;
                }else{
                    left++;
                }
            }
            return maxArea;
        }

    コードの品質を高めることは:美しい構想を蓄積して、良質なコードの過程です.