## 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));
}
}
}
}
}
``````
Copy The Code &

Input

cmd
ages = [16,16]

Output

cmd
2

### #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 &

Input

cmd
ages = [16,16]

Output

cmd
2