LeetCode 1394. 找出数组中的幸运数
- 2020 年 4 月 10 日
- 筆記
题目
1394. 找出数组中的幸运数[1]
描述
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。 给你一个整数数组 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 解释:数组中不存在幸运数。 示例 4: 输入:arr = [5] 输出:-1 示例 5: 输入:arr = [7,7,7,7,7,7,7] 输出:7
解题思路
- 定义一个集合
set
,用于存放幸运数; - 两次遍历数组,同时在定义一个变量
count
用于计数; - 判断频次和数值大小是否相等,相等则加入集合
set
; - 跳出循环后,判断集合
set
是否为空,不为空则返回集合中的最大值; - 默认返回
-1
,即数组中不含幸运数;
实现
package Array; import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * Created with IntelliJ IDEA. * Version : 1.0 * Author : cunyu * Email : [email protected] * Website : https://cunyu1943.github.io * Date : 2020/4/3 15:21 * Project : LeetCode * Package : Array * Class : OneThreeNineFour * Desc : 1394. 找出数组中的幸运数 */ public class OneThreeNineFour { public static void main(String[] args) throws Exception { int[] arr = {2}; OneThreeNineFour oneThreeNineFour = new OneThreeNineFour(); System.out.println(oneThreeNineFour.findLucky(arr)); } public int findLucky(int[] arr) { Set<Integer> set = new HashSet<>(); for (int i = 0; i < arr.length; i++) { int count = 0; for (int j = 0; j < arr.length; j++) { if (arr[i] == arr[j]) { count++; } } if (count == arr[i]) { set.add(count); } } if (!set.isEmpty()) { return Collections.max(set); } return -1; } }
参考资料
[1] 1394. 找出数组中的幸运数: https://leetcode-cn.com/problems/find-lucky-integer-in-an-array/