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

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

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

今天發(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)小的為準
        // 假如當(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)很多好玩的東西.

相關(guān)文章

  • Js瀏覽器全屏代碼(模仿按F11)

    Js瀏覽器全屏代碼(模仿按F11)

    Js瀏覽器全屏代碼(模仿按F11),需要的朋友可以參考下。
    2011-01-01
  • 微信小程序新手教程之啟動頁的重要性

    微信小程序新手教程之啟動頁的重要性

    這篇文章主要給大家介紹了關(guān)于微信小程序新手教程之啟動頁重要性的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • uniapp實現(xiàn)app自動更新詳細步驟

    uniapp實現(xiàn)app自動更新詳細步驟

    這篇文章主要給大家介紹了關(guān)于uniapp實現(xiàn)app自動更新的詳細步驟,文中給出了詳細的代碼示例以及圖文教程,對大家學(xué)習(xí)或者使用uniapp具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-08-08
  • layui固定下拉框的顯示條數(shù)(有滾動條)的方法

    layui固定下拉框的顯示條數(shù)(有滾動條)的方法

    今天小編就為大家分享一篇layui固定下拉框的顯示條數(shù)(有滾動條)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • uni-app 項目中 “文件查找失?。骸甤rypto-js‘“ 的問題及解決方法

    uni-app 項目中 “文件查找失敗:‘crypto-js‘“ 的問題及解決方法

    在開發(fā)使用 uni-app 框架的項目時,遇到依賴問題是常見的,本文將介紹如何解決編譯過程中出現(xiàn)的 “文件查找失?。骸甤rypto-js’” 錯誤,并說明這種錯誤為什么會發(fā)生以及如何避免,下面分步驟給大家?guī)斫鉀Q方案,感興趣的朋友一起看看吧
    2024-07-07
  • javascript之鼠標拖動位置互換效果代碼

    javascript之鼠標拖動位置互換效果代碼

    javascript之鼠標拖動位置互換效果代碼...
    2007-11-11
  • JavaScript實現(xiàn)小程序圖片裁剪功能的示例代碼

    JavaScript實現(xiàn)小程序圖片裁剪功能的示例代碼

    這篇文章主要為大家詳細介紹了如何利用JavaScript實現(xiàn)小程序圖片裁剪功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • JavaScript使用Fetch的方法詳解

    JavaScript使用Fetch的方法詳解

    Fetch?API提供了一個JavaScript接口,用于訪問和操縱HTTP管道的部分。它還提供了一個全局?fetch()方法,該方法提供了一種簡單,合理的方式來跨網(wǎng)絡(luò)異步獲取資源。本文將詳解JS如何使用Fetch,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • JavaScript中的值類型轉(zhuǎn)換介紹

    JavaScript中的值類型轉(zhuǎn)換介紹

    這篇文章主要介紹了JavaScript中的值類型轉(zhuǎn)換介紹,本文講解了值類型轉(zhuǎn)換規(guī)則、值類型轉(zhuǎn)換與比較、顯式類型轉(zhuǎn)換、對類型自動轉(zhuǎn)換的使用等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • 使用Chrome調(diào)試JavaScript的斷點設(shè)置和調(diào)試技巧

    使用Chrome調(diào)試JavaScript的斷點設(shè)置和調(diào)試技巧

    這篇文章主要介紹了使用Chrome調(diào)試JavaScript的斷點設(shè)置和調(diào)試技巧,需要的朋友可以參考下
    2014-12-12

最新評論

襄垣县| 化德县| 金秀| 建湖县| 施秉县| 法库县| 清镇市| 壶关县| 开化县| 陈巴尔虎旗| 巴里| 景泰县| 新干县| 青龙| 荆州市| 宾川县| 马关县| 永嘉县| 汪清县| 孙吴县| 河南省| 从化市| 衡阳市| 泗水县| 得荣县| 贵州省| 普陀区| 邮箱| 临武县| 嘉峪关市| 石柱| 宜君县| 南京市| 新田县| 广河县| 泸水县| 柏乡县| 新平| 留坝县| 平邑县| 微山县|