• <legend id="kntsb"></legend>
  • <track id="kntsb"></track>
    <span id="kntsb"><output id="kntsb"><b id="kntsb"></b></output></span>
  • <span id="kntsb"><blockquote id="kntsb"><nav id="kntsb"></nav></blockquote></span>
      <legend id="kntsb"></legend><span id="kntsb"><output id="kntsb"></output></span>

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

      0571-56020837

      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號 達內時代科技集團有限公司 版權所有

      選擇城市和中心
      江西省

      貴州省

      廣西省

      海南省

      天天爱搞搞狠狠爱 天天射天天日天天舔 狠狠在线插口日日干