1394. Find Lucky Integer in an Array

Given an array of integers arr, a lucky integer is an integer which has a frequency in the array equal to its value.

Return a lucky integer in the array. If there are multiple lucky integers return the largest of them. If there is no lucky integer return -1.

Example 1:

Input: arr = [2,2,3,4]
Output: 2
Explanation: The only lucky number in the array is 2 because frequency[2] == 2.

Example 2:

Input: arr = [1,2,2,3,3,3]
Output: 3
Explanation: 1, 2 and 3 are all lucky numbers, return the largest of them.

Example 3:

Input: arr = [2,2,2,3,3]
Output: -1
Explanation: There are no lucky numbers in the array.

Example 4:

Input: arr = [5]
Output: -1

Example 5:

Input: arr = [7,7,7,7,7,7,7]
Output: 7

Constraints:

  • 1 <= arr.length <= 500
  • 1 <= arr[i] <= 500

先排序,拿map存频率,再从大到小查有没有相等的,因为题目说了如果有多个number返回最大的。

class Solution {
    public int findLucky(int[] arr) {
        Arrays.sort(arr);
        Map<Integer, Integer> map = new HashMap();
        for(int i: arr){
            map.put(i, map.getOrDefault(i,0) + 1);
        }
        for(int i = arr.length - 1; i > -1; i--){
            if(map.get(arr[i]) == arr[i]) return arr[i];
        }
        return -1;
    }
}
原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12710095.html