11.力扣题目_盛最多水的容器

盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

public class Solution {
    public int MaxArea(int[] height) {

             int Valume = 0;
            int currentValume = 0;
            int HightVal = 0;//高度Y
            int WidthVal = 0;//宽度X

            int Leftspeen = 0;//左侧的指针
            int Rightspeen = height.Length - 1;//右侧的指针

            bool isChecked = true;//两边是否快要碰头了
            while (isChecked)
            {
                HightVal = height[Leftspeen] > height[Rightspeen] ? height[Rightspeen] : height[Leftspeen];//计算高度
                WidthVal = Rightspeen - Leftspeen;//计算宽度
                currentValume = HightVal * WidthVal;//计算面积
                if (currentValume > Valume)//面积的判断,取得最大值
                {
                    Valume = currentValume;
                }

                if (Leftspeen + 1 == Rightspeen)//是否快要碰头的判断
                {
                    break;
                }

                if (height[Leftspeen] >= height[Rightspeen])//指针的偏移的判断,移动较小的那一侧
                {
                    Rightspeen = Rightspeen - 1;
                }
                else
                {
                    Leftspeen = Leftspeen + 1;
                }
            }
            return Valume;
    }
}

猜你喜欢

转载自blog.csdn.net/GoodCooking/article/details/130716213