Find Lucky Integer in an Array

Given an array of integers arr, a lucky integer is an integer that 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

Approach

Java

import java.util.HashMap;

public class FindLuckyIntegerArray {
    public static void main(String[] args) {
        int[] arr = { 122333 };
        System.out.println(findLucky(arr));
    }

    static int findLucky(int[] arr) {
        HashMap<IntegerIntegermap = new HashMap<IntegerInteger>();
        for (int i = 0; i < arr.length; i++)
            map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);

        int res = -1;
        for (Integer i : map.keySet())
            if (map.containsKey(i) && map.get(i) == i) {
                res = Math.max(res, i);
            }
        return res;
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

int findLucky(vector<int&arr)
{
    int freq[501] = {0};
    for (int i = 0i < arr.size(); i++)
        freq[arr[i]]++;
    int res = -1;
    for (int i = 1i < 501i++)
        if (freq[i] == i)
        {
            res = max(resi);
        }
    return res;
}

int main()
{
    vector<intarr = {2234};
    cout << findLucky(arr);
    return 0;
}


No comments:

Post a Comment