使用 JavaScript 構建一個特定大小的陣列,且相鄰元素之和為完全平方數


我們需要編寫一個 JavaScript 函式,該函式接收一個數字 n。我們的函式應返回一個數字陣列 1...n,它們排列的方式是每個 2 個連續數字的和是一個平方。

示例

相應的程式碼為:

 即時演示

const n = 15;
const buildSquaresArray = (n = 1, res = []) => {
   const helper = (res, set, n) => {
      if(set.size === n){
         return true;
      };
      for(let i = 1; i <= n; i++){
         if (set.has(i)){
            continue;
         };
         if(res.length && Math.sqrt(res[0] + i) % 1 !== 0){
            continue;
         };
         set.add(i);
         res.unshift(i);
         if(helper(res,set,n)){
            return true;
         }
         res.shift();
         set.delete(i);
      };
      return false;
   };
   return helper(res,new Set(),n) ? res : false;
};
console.log(buildSquaresArray(n));

輸出

控制檯中的輸出為:

[
   9,  
   7,  
   2,
   14,
   11,  
   5,
   4,
   12,
   13,  
   3,  
   6,
   10,
   15,  
   1,  
   8
]

更新於: 17-4-2021

88 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始使用
廣告