亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將整數數組轉換為樹?

如何將整數數組轉換為樹?

拉丁的傳說 2023-03-10 16:46:04
這里有 100 個數字,每行 10 個。[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]我想將這些數字排列成一棵樹,其中每個節點最多有 5 個元素。是這樣的:[                                                                                       ] [                   ],[                   ],[                   ],[                   ]  [ ],[ ],[ ],[ ],[ ]   [ ],[ ],[ ],[ ],[ ]   [ ],[ ],[ ],[ ],[ ]   [ ],[ ],[ ],[ ],[ ]   1   6   1   6   1     6   1   6   1   6     1   6   1   6   1     6   1   6   1   6   2   7   2   7   2     7   2   7   2   7     2   7   2   7   2     7   2   7   2   7   3   8   3   8   3     8   3   8   3   8     3   8   3   8   3     8   3   8   3   8   4   9   4   9   4     9   4   9   4   9     4   9   4   9   4     9   4   9   4   9   5   0   5   0   5     0   5   0   5   0     5   0   5   0   5     0   5   0   5   0所以我們在樹中有 4 個“層”:在第 1 層(頂層),我們有 4 個孩子(4 個數字數組數組)。在第 2 層,我們有 5 個孩子(5 個數字數組)。在第 3 層,我們有 5 個孩子(5 個數字)。第 4 層是數字。如何編寫 JavaScript 算法來生成這樣的樹?規則是,每個塊最多 5 個?;蛘吒话愕卣f,n每個塊的最大值。這有點類似于數組分塊算法,但同時看起來更復雜。我已經為此困惑了幾天,但這將有助于解決這個問題:如何將數組劃分為大小為 2 的冪的桶樹?基本上,隨著數組變長,嵌套會越來越大。另一個更簡單的例子是 13 項數組:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3]哪個被轉換成這棵樹:[           ] [ ],[ ],[ ]  1   6   1  2   7   2  3   8   3  4   9     5   0   
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

您可以使用遞歸方法,從最內部的塊大小開始,然后將該輸出劃分到每個級別。因此,只要結果長度大于參數,size您就可以通過調用函數來劃分它。


const data = [

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,

 1, 2, 3, 4, 5, 6, 7, 8, 9, 0

]


function divide(data, size) {

  const result = []


  for (let i = 0; i < data.length; i += size) {

    const chunk = data.slice(i, i + size);

    result.push(chunk)

  }


  if (result.length > size) {

    return divide(result, size)

  }


  return result;

}


const result = divide(data, 5);

console.log(result)


查看完整回答
反對 回復 2023-03-10
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號