Algorithm
Problem Name: 825. Friends Of Appropriate Ages
There are n
persons on a social media website. You are given an integer array ages
where ages[i]
is the age of the ith
person.
A Person x
will not send a friend request to a person y
(x != y
) if any of the following conditions is true:
age[y] <= 0.5 * age[x] + 7
age[y] > age[x]
age[y] > 100 && age[x] < 100
Otherwise, x
will send a friend request to y
.
Note that if x
sends a request to y
, y
will not necessarily send a request to x
. Also, a person will not send a friend request to themself.
Return the total number of friend requests made.
Example 1:
Input: ages = [16,16] Output: 2 Explanation: 2 people friend request each other.
Example 2:
Input: ages = [16,17,18] Output: 2 Explanation: Friend requests are made 17 -> 16, 18 -> 17.
Example 3:
Input: ages = [20,30,100,110,120] Output: 3 Explanation: Friend requests are made 110 -> 100, 120 -> 110, 120 -> 100.
Constraints:
n == ages.length
1 <= n <= 2 * 104
1 <= ages[i] <= 120
Code Examples
#1 Code Example with Java Programming
Code -
Java Programming
class Solution {
public int numFriendRequests(int[] ages) {
Map map = new HashMap<>();
for (int age : ages) {
map.put(age, map.getOrDefault(age, 0) + 1);
}
int totalFriendRequests = 0;
for (Integer ageOne : map.keySet()) {
for (Integer ageTwo : map.keySet()) {
if (!((ageTwo < = 0.5 * ageOne + 7) || (ageTwo > ageOne) || (ageTwo > 100 && ageOne < 100))) {
totalFriendRequests += map.get(ageOne) * (map.get(ageTwo) - (ageOne == ageTwo ? 1 : 0));
}
}
}
return totalFriendRequests;
}
}
Copy The Code &
Try With Live Editor
Input
Output
#2 Code Example with Python Programming
Code -
Python Programming
class Solution:
def numFriendRequests(self, ages):
"""
:type ages: List[int]
:rtype: int
"""
cntr, res = collections.Counter(ages), 0
for A in cntr:
for B in cntr:
if B <= 0.5 * A + 7 or B > A: continue
if A == B: res += cntr[A] *(cntr[A] - 1)
else: res += cntr[A] * cntr[B]
return res
Copy The Code &
Try With Live Editor
Input
Output