国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript實現(xiàn)twitter puddles算法實例

2019-11-20 13:48:21
字體:
供稿:網(wǎng)友

今天發(fā)現(xiàn)了一個挺好玩的算法題,下面是它的算法描述,源自twitter的一道面試題。

twitter puddles 算法描述

先看一副圖

上圖里的數(shù)字是根據(jù)一個數(shù)組內(nèi)容來描述的,最后會根據(jù)每個數(shù)字的大小來模擬一道墻的高度,最后生成一面墻,問你,當(dāng)下雨的時候,這面墻可以裝多少水,以1為計數(shù)單位。

下面是裝完水之后的一面墻的樣子

看完上面上幅圖,感覺是不是很好玩,確實,下面來簡單的分析下它的算法實現(xiàn)

其實這個原理比較簡單,總共有下面幾個要點:

1.最左邊和最右邊肯定不能裝水
2.裝水的高度依賴自身左右兩側(cè)內(nèi)兩個最大值其中的最小值

下面我們用js來簡單的實現(xiàn)它:

復(fù)制代碼 代碼如下:

/**
*  計算以數(shù)組項為高度的墻能裝多少水
*  數(shù)組例子 [2,5,1,2,3,4,7,7,6,9]
**/
function getWaterCounts(arg){
    var i = 0,
        j = 0,
        count = 0;
    // 第一項和最后一項都得排除
    for(i = 1; i < arg.length - 1; i++){
        var left = Math.max.apply(null, arg.slice(0, i + 1));
        var right = Math.max.apply(null, arg.slice(i, arg.length));
        var min = left >= right ? right : left;
        // 以左右兩邊最大值內(nèi)小的為準(zhǔn)
        // 假如當(dāng)前值大于或者等于這個值什么都不做
        if(arg[i] < min){
            count += min - arg[i];
        }
    }
    console.log(count);
}
getWaterCounts([2,5,1,2,3,4,7,7,6,9]); // 11

總結(jié)

嘿嘿,實現(xiàn)是不是挺簡單的,其實只要你愿意思考,用js可以實現(xiàn)很多好玩的東西.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 驻马店市| 海丰县| 江西省| 苗栗县| 沙田区| 巨鹿县| 疏附县| 双鸭山市| 周至县| 左权县| 通榆县| 邵阳市| 赤壁市| 广南县| 会泽县| 汉中市| 孟连| 西宁市| 百色市| 荆门市| 松溪县| 望都县| 乐至县| 宜兴市| 双流县| 离岛区| 金平| 尖扎县| 曲水县| 布尔津县| 扶余县| 枣庄市| 龙南县| 广饶县| 文安县| 长泰县| 滨海县| 凌海市| 滁州市| 蕲春县| 安福县|