[Leetcode]Container With Most Water
2171 ワード
問題)パラメータheightは数値からなる配列である.グラフィックで表すと、y軸の値であり、高さの値があります.
[1,8,6,2,5,4,8,3,7]を下図に示します.
そのグラフに水があるとき、水を入れることができる最大面積の値を返してください.
私の考えの論理
heightはheight[lt]およびheight[rt]においてより小さな値として計算される.
widthはrtからltを減算した値です.
function getMaxArea(height) {
let max = 0;
for(let lt = 0; lt <height.length-1; lt++){
for(let rt = lt +1; rt<height.length; rt++){
let h = Math.min(height[lt], height[rt]);
let w = rt - lt;
if(max <h*w) max = h*w;
}
}
return max
}
二重砲口以外に、他の方法はありますか?function getMaxArea(height) {
let lt = 0;
let rt = height.length -1;
let max = 0
while(lt < rt){
let h = Math.min(height[lt], height[rt]);
let w = rt - lt;
if(max < h*w) max = h*w;
else lt++
}
while(lt < rt){
let h = Math.min(height[lt], height[rt]);
let w = rt - lt;
if(max < h*w) max = h*w;
else rt--
}
}
return max}
なんといっても二重砲口で開く方式で正解率100%は、二重砲口です^^
追加)
上のwhileの2つのソリューションを用いて,小解の欠点を補った.
出典:YONGHYUNのブログでは、とても良い方法なので見逃せません(?)
function(height) {
let result = 0;
let i = 0;
let j = height.length-1 // #1
while(i < j){ // #2
result = Math.max(result, Math.min(height[i], height[j])*(j-i)) // #3
height[i] < height[j] ? i++ : j-- // #4
}
return result // #5
};
🍯 の最後の部分
実は...ほとんど书き终わってなくなって、第2回书きます^^ははは、みんなが早めに保存することができることを望んで、ははははは
Reference
この問題について([Leetcode]Container With Most Water), 我々は、より多くの情報をここで見つけました https://velog.io/@hoje15v/leetcodeContainer-With-Most-Waterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol