We can count the frequency of each number in the array, then check which numbers have a frequency equal to their value. The largest such number is the answer. This works because the constraints are small and counting is efficient.
classSolution {
public:int findLucky(vector<int>& arr) {
int freq[501] = {0};
for (int n : arr) freq[n]++;
int ans =-1;
for (int i =1; i <=500; ++i) {
if (freq[i] == i) ans = i;
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
funcfindLucky(arr []int) int {
freq:= make([]int, 501)
for_, n:=rangearr {
freq[n]++ }
ans:=-1fori:=1; i<=500; i++ {
iffreq[i] ==i {
ans = i }
}
returnans}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
publicintfindLucky(int[] arr) {
int[] freq =newint[501];
for (int n : arr) freq[n]++;
int ans =-1;
for (int i = 1; i <= 500; i++) {
if (freq[i]== i) ans = i;
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
funfindLucky(arr: IntArray): Int {
val freq = IntArray(501)
for (n in arr) freq[n]++var ans = -1for (i in1..500) {
if (freq[i] == i) ans = i
}
return ans
}
}
1
2
3
4
5
6
7
8
9
10
classSolution:
deffindLucky(self, arr: list[int]) -> int:
freq = [0] *501for n in arr:
freq[n] +=1 ans =-1for i in range(1, 501):
if freq[i] == i:
ans = i
return ans
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
impl Solution {
pubfnfind_lucky(arr: Vec<i32>) -> i32 {
letmut freq =vec![0; 501];
for n in arr {
freq[n asusize] +=1;
}
letmut ans =-1;
for i in1..=500 {
if freq[i] == i asi32 {
ans = i asi32;
}
}
ans
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
findLucky(arr: number[]):number {
constfreq=new Array(501).fill(0);
for (constnofarr) freq[n]++;
letans=-1;
for (leti=1; i<=500; i++) {
if (freq[i] ===i) ans=i;
}
returnans;
}
}