在JavaScript中查找数组中最大的非重复数

我们需要编写一个JavaScript函数,该函数将Integers数组作为第一个也是唯一的参数。

然后,该函数应遍历数组,并从数组中选择仅在数组中出现一次的最大数字。之后,返回此数字,如果数组中没有唯一数字,则应返回-1。

我们还被告知,任何数组元素的最大值将不超过100,并且将大于0,这意味着-

0 < arr[i] < 101

对于数组索引中的所有i。

例如-

如果输入数组是-

const arr = [35, 37, 33, 39, 34, 39, 38, 31];

那么输出应该是-

const output = 38;

由于数组条目将始终小于或等于100且大于0,因此我们可以简单地使用长度为100的数组来存储原始数组中每个数字的频率,然后从其后遍历以选择唯一元素。

示例

为此的代码将是-

const arr = [35, 37, 33, 39, 34, 39, 38, 31];
const pickGreatestUnique = (arr = [], bound = 100) => {
   const map = Array(bound).fill(0);
   for(let i = 0; i < arr.length; i++){
      const num = arr[i];
      map[num - 1]++;
   }
   for(let j = bound - 1; j >= 0; j--){
      const frequency = map[j];
      if(frequency === 1){
         return j + 1;
      }
   }
   return -1;
}
console.log(pickGreatestUnique(arr));
输出结果

控制台中的输出将是-

38