[Leetcode] 11. Container With Most Water
https://leetcode.com/problems/container-with-most-water/
入力:整数配列height
出力:i,jインデックスの最大値は(j-i)*min(height[i],height[j])
上記の例のheight配列は[1,8,6,2,5,4,8,3,7]である.棒の間に水をかけるとグラフに書いてある場合は、最も水をかけることができる区間を見つければいいです.
解決策は,i=0,j=height-1インデックスで最大値を求めることである.x軸の距離が最も広いため、狭い区間により広い水量を加えるためには、y軸の高さを高くしなければならない.i,jの区間を縮小し,式を計算し,最大値を更新すると,答えが見つかる.
コード#コード#
入力:整数配列height
出力:i,jインデックスの最大値は(j-i)*min(height[i],height[j])
上記の例のheight配列は[1,8,6,2,5,4,8,3,7]である.棒の間に水をかけるとグラフに書いてある場合は、最も水をかけることができる区間を見つければいいです.
解決策は,i=0,j=height-1インデックスで最大値を求めることである.x軸の距離が最も広いため、狭い区間により広い水量を加えるためには、y軸の高さを高くしなければならない.i,jの区間を縮小し,式を計算し,最大値を更新すると,答えが見つかる.
コード#コード#
class Solution {
public int maxArea(int[] height) {
int i = 0;
int j = height.length - 1;
int result = 0;
while (i < j) {
int temp = (j - i) * Math.min(height[i], height[j]);
if (result < temp)
result = temp;
if (height[i] < height[j]) {
i++;
} else {
j--;
}
}
return result;
}
}
Reference
この問題について([Leetcode] 11. Container With Most Water), 我々は、より多くの情報をここで見つけました https://velog.io/@gokoy/Leetcode-11.-Container-With-Most-Waterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol