使用 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 次浏览

开启你的 职业生涯

完成课程以获得认证

开始使用
广告
© . All rights reserved.