最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年12月06日 11:18:16   投稿:junjie  
這篇文章主要介紹了JavaScript實(shí)現(xiàn)twitter puddles算法實(shí)例,本文源自twitter的一道面試題,本文使用js解開(kāi)了這首題,需要的朋友可以參考下

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

twitter puddles 算法描述

先看一副圖

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

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

看完上面上幅圖,感覺(jué)是不是很好玩,確實(shí),下面來(lái)簡(jiǎn)單的分析下它的算法實(shí)現(xiàn)

其實(shí)這個(gè)原理比較簡(jiǎn)單,總共有下面幾個(gè)要點(diǎn):

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

下面我們用js來(lái)簡(jiǎn)單的實(shí)現(xiàn)它:

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

/**
*  計(jì)算以數(shù)組項(xiàng)為高度的墻能裝多少水
*  數(shù)組例子 [2,5,1,2,3,4,7,7,6,9]
**/
function getWaterCounts(arg){
    var i = 0,
        j = 0,
        count = 0;
    // 第一項(xiàng)和最后一項(xiàng)都得排除
    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)前值大于或者等于這個(gè)值什么都不做
        if(arg[i] < min){
            count += min - arg[i];
        }
    }
    console.log(count);
}
getWaterCounts([2,5,1,2,3,4,7,7,6,9]); // 11

總結(jié)

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

相關(guān)文章

最新評(píng)論

册亨县| 沧州市| 伊春市| 怀集县| 诏安县| 商丘市| 中卫市| 邳州市| 佛山市| 治多县| 尚义县| 金坛市| 会同县| 安多县| 望都县| 黄山市| 合作市| 双辽市| 开原市| 集贤县| 青阳县| 郑州市| 临沭县| 农安县| 松溪县| 洛扎县| 筠连县| 化德县| 安岳县| 武夷山市| 潜山县| 昌黎县| 申扎县| 自治县| 三穗县| 灯塔市| 宜良县| 永靖县| 余干县| 丹巴县| 板桥市|