記錄一下leetcode11 盛最多水的容器

2021-10-01 18:29:40 字數 968 閱讀 8313

第一種解決方法為暴力破解:

/**

* 計算出最大值,這裡就是求乙個面積的最大值

* @param height

* @return

*/public static int maxarea(int height)

int area = 0;

// (i, height[i])

for (int i = 0; i < height.length; i++)

}return area;

}

第二種解決方法為雙指標方法,指標i最開始指向頭部,指標j最開始指向尾部。因為是取矩形最大值,所以需要獲取當前y軸的最小值,作為其最大值。如果height[i] < height[j], 則下次進行i++,因為進行y--只會使值越來越小,同理,大於時,則進行j--;直到 i==j之前的最後一次比較,**如下:

/**

* 雙指標方法

* @param height

* @return

*/public static int maxarea1(int height)

// 指向陣列頭

int i = 0;

// 指向陣列尾

int j = length - 1;

int area = 0;

// 因為最大值的寬為j - i的值,最大值的高是height[i] 和 height[j]的最小值

// 所以對於初始時,假設固定的height[i] < height[j],對於固定至height[0],值最大就是height[0] * j

// 所以無需比較接下來的i => j-- 的值了,所以對i進行+1與j進行比較

while (i != j) else

area = math.max(area, temp);

}return area;

}

leetcode11 盛最多的水

題意 給出乙個陣列表示乙個容器,陣列中的每個數字表示容器中每個柱子的高度,每兩根柱子中的間距為1,問該容器最大的盛水量。思路1 暴力法 最簡單的思路就是暴力遍歷,乙個迴圈從頭到尾,乙個迴圈從尾到上乙個迴圈指向的位置,計算每兩根柱子之間的盛水量,將最大的盛水量返回。public int maxarea...

LeetCode 11 盛水的容器

給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。圖中垂直線代表輸入陣列 1,8,...

leetcode 11 盛最多的水

給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。圖中垂直線代表輸入陣列 1,8,...