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


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

该函数应遍历数组,并从数组中选取只出现一次的最大数字。之后,返回此数字;如果数组中没有唯一数字,则应返回 -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

更新于:2021年2月26日

335 次查看

开启你的 职业生涯

完成课程获得认证

开始学习
广告