第一種解決方法為暴力破解:
第二種解決方法為雙指標方法,指標i最開始指向頭部,指標j最開始指向尾部。因為是取矩形最大值,所以需要獲取當前y軸的最小值,作為其最大值。如果height[i] < height[j], 則下次進行i++,因為進行y--只會使值越來越小,同理,大於時,則進行j--;直到 i==j之前的最後一次比較,**如下:/**
* 計算出最大值,這裡就是求乙個面積的最大值
* @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;
}
/**
* 雙指標方法
* @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,...