leetcode JavaScript水桶容積最大

傳入一個數組,

右邊減去左邊索引的差值 爲寬

左邊和右邊數值小的一個爲高

求水桶容積最大,也就是求 寬*高 最大的情況

可以想象成要給座標系,索引爲x軸,數值爲y軸,問:哪一個組合的封閉空間面積最大

解決辦法一

let arr = [1,8,6,2,5,4,8,3,7]
//方法1
var maxArea = function (height) {
    let max = 0;
    let left = 0,right=height.length-1;
    while(left<right){
        const curArea =  (right-left)*Math.min(height[left],height[right]) 
        // 寬就是 右邊索引和左邊索引的差值
        // 高就是 短的一條邊,水桶能裝多少水取決於最短的板
        if(curArea>max){
            max = curArea
        }
        if(height[left]>height[right]){
            right--
        }else{
            left++
        }
    }
    return max;
};
console.log(maxArea(arr))  //49

解決辦法二

let arr = [1,8,6,2,5,4,8,3,7]

// 方法二
function  maxArea2(arr) {  
    let max= 0;
    for(let i=0;i<arr.length;i++){
        for(let j=i+1;j<arr.length;j++){
            const area = (j-i)*Math.min(arr[i],arr[j])
            if(area>max){
                max = area
            }
        }
    }
    return max;
}
console.log(maxArea2(arr)) //49

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章