LeetCode1394. 找出数组中的幸运数

90 views次阅读
没有评论

在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数位「幸运数」。

给定一个整数数组arr,请你从中找出并返回一个幸运数。 如果数组中存在多个幸运数,只需返回 最大 的那个。 如果数组中不包含幸运数,则返回-1。

示例1:

输入:arr = [2,2,3,4] 输出:2 解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。

示例 2:

输入:arr = [1,2,2,3,3,3] 输出:3 解释:1、2 以及 3 都是幸运数,只需要返回其中最大的 3 。

示例 3:

输入:arr = [2,2,2,3,3] 输出:-1 解释:数组中不存在幸运数。

个人解答👇

首先先将数组从小到大进行排序,循环取到每个相同元素的个数,与元素本身大小相比较;若有多个,则取最大的一个;若没有,就返回-1。

  const findLucky = (arr) => {
    arr.sort((a, b) => a - b);
    let res = [];
    for (let i = 0; i < arr.length; i++) {
      let flag = arr.lastIndexOf(arr[i]) - arr.indexOf(arr[i]) + 1; // 计算相同元素的个数
      if (flag === arr[i] && !res.includes(arr[i])) { // 过滤重复元素
        res.push(arr[i]);
      }
    }
    return res.length ? Math.max(...res) : -1; // 若结果数组不为空,则返回数组中最大值,否则返回-1.
    // return res.length ? Math.max(...[...new Set(res)]) : -1;
  }
  const arr = [1,2,2,3,3,3];
  console.log(findLucky(arr)); // 3

1
guxuerui
版权声明:本站原创文章,由guxuerui于2020年07月29日发表,共计1109字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Loading...