JavaScript中的特殊数组

如果存在正整数num,则将数组称为特殊数组,以使该数组中存在大于num的num个元素。数字num不一定必须属于该数组,它应该存在。

例如-如果输入数组是-

const arr = [2, 1, 5, 2, 7, 9];

然后,如果我们进行了适当的检查,就会发现对于num = 3,此数组中恰好有3个元素大于3。

但是,3不是此数组的一部分,但这是有效的。因此,我们需要编写一个接受数字数组的JavaScript函数。

该函数应返回特殊的数字(如果完全特殊),否则该函数应返回-1。

示例

const arr = [2, 1, 5, 2, 7, 9];
const findSpecialArray = (array = []) => {
   const arr = array.slice().sort((a, b) => a - b);
   let index = 1;
   const { length } = arr;
   while(index <= arr[length-1]){
      let num = 0;
      for(let i=0; i<length; i++){
         if(arr[i] >= index){
            num++;
         }
      };
      if(num === index){ return index; };
      index++;
   };
   return -1;
};
console.log(findSpecialArray(arr));

输出结果

这将产生以下输出-

3