<ol id="hmbbk"></ol>
<em id="hmbbk"><acronym id="hmbbk"><u id="hmbbk"></u></acronym></em>
  • <rp id="hmbbk"></rp>

      <rp id="hmbbk"><acronym id="hmbbk"><input id="hmbbk"></input></acronym></rp>

      <dd id="hmbbk"><noscript id="hmbbk"></noscript></dd>

        杭州PHP培訓
        達內杭州PHP培訓中心

        13175137725

        2020年前端面試題匯總之算法和應用

        • 時間:2021-04-02 14:04
        • 發布:杭州PHP培訓
        • 來源:php面試題

        今天小編要跟大家分享的文章是關于2020年前端面試題匯總之算法和應用。正在從事Web前端工作和想要換工作的小伙伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。

        2020年前端面試題匯總

        算法和應用

        3.1 隨機洗牌算法

        題目:隨機打亂數組里的元素,元素不能在原來的位置

        let arr1 = [1,2,3,4,5,6,7,8,9,10]

        function shuffle(array) {

        for (let i = array.length - 1; i >= 0; i--) {

        let randomIndex = Math.floor(Math.random() * (i + 1)); [array[i],

        array[randomIndex]] = [array[randomIndex], array[i]] }

        return array;}

        shuffle(arr1)

        Fisher–Yates shuffle洗牌算法:從后往前遍歷,取當前的數和前面的一個隨機下標的數交換位置。

        3.2 兩個雞蛋與100層樓

        題目:兩個軟硬程度一樣但未知的雞蛋,它們有可能都在一樓就摔碎,也可能從一百層樓摔下來沒事。有座100層的建筑,要你用這兩個雞蛋確定哪一層是雞蛋可以安全落下的最高位置。可以摔碎兩個雞蛋。在有限層數和蛋數的情況下,求即使最壞情況下需要的最少判斷次數。

        這是一道動態規劃的題目,首先假設f[n][m]表示從m層樓扔n個雞蛋,找到的安全位置的最少判斷次數。如果第一個雞蛋第一次從[1, i]中任選第j層扔下,如果碎了,就必須從[1, j - 1]挨著試, 也就是dp[1][j - 1];如果不碎的話,那么還要在[j, i]層繼續扔,即dp[2][i - j]。最壞情況下則取max(dp[1][j - 1], dp[2][i - j])次。

        根據方程寫出解法:

        function egg(floor) {

        // dp[1][i] = i, dp[2][i] = i 最差的情況預處理數據

        let dp = Array.from(new Array(3),

        () => Array.from({length: floor + 1}, (v,k) => k))

        for (let i = 1; i <= floor; i++ ) {

        for (let j = 1; j < i; j++ ) {

        dp[2][i] = Math.min ( dp[2][i], 1 + Math.max(dp[1][j-1], dp[2][i-j]) );

        } }

        return dp[2][floor]}

        如果給的是n個雞蛋,用下面的解法:

        function floorEgg(egg, floor) {

        if (egg < 1 || floor < 1)

        return 0 // 初始化數組,值為最壞的次數

        let dp = Array.from(new Array(egg + 1).keys(),x => Array.from({length: floor + 1}, (v,k) => x && k))

        // 構建dp數組 for(let i = 2; i <= egg; i++){

        for(let j = 1; j <= floor; j++){

        for(let k = 1; k < j; k++){

        dp[i][j] = Math.min(dp[i][j], 1 + Math.max(dp[i-1][k-1], dp[i][j-k]));

        }

        } }

        return dp[egg][floor]}

        以上就是小編今天為大家分享的關于2020年前端面試題匯總之算法和應用的文章,希望本篇文章能夠對想要換工作的Web前端工程師們有所幫助,想要了解更多Web前端知識記得關注達內Web培訓官網,最后祝愿小伙伴們工作順利,成為一名優秀的Web前端工程師。

        文章來源:原創 const弓長張 總在落幕后

        【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除。】

        預約申請免費試聽課

        怕錢不夠?就業掙錢后再付學費!    怕學不會?從入學起,達內定制課程!     擔心就業?達內多家實踐企業供你挑選!

        上一篇:2020年前端面試題匯總之概念
        下一篇:2020年前端面試題匯總之常見性能優化

        2020年前端面試題匯總之常見性能優化

        2020年前端面試題匯總之算法和應用

        2020年前端面試題匯總之概念

        2021Web前端面試題及答案匯總-Javascript篇

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        江西省

        貴州省

        廣西省

        海南省

        免费国产久久啪久久爱每天第一时间更新最新aV视频、宅男在线视频 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>