LeetCode - Friends Of Appropriate Ages Solution - The Coding Shala
Home >> LeetCode >> Friend of Appropriate Ages
Other Posts You May Like
In this post, we will see how to solve LeetCode's Friends Of Appropriate Ages Problem and its solution in Java.
Friends Of Appropriate Ages
Some people will make friend requests. The list of their ages is given and ages[i] is the age of the ith person.
Person A will NOT friend request person B (B != A) if any of the following conditions are true:
age[B] <= 0.5 * age[A] + 7
age[B] > age[A]
age[B] > 100 && age[A] < 100
Otherwise, A will friend request B.
Note that if A requests B, B does not necessarily request A. Also, people will not friend request themselves.
How many total friend requests are made?
Example 1:
Input: [16,16]
Output: 2
Explanation: 2 people friend request each other.
Example 2:
Input: [16,17,18]
Output: 2
Explanation: Friend requests are made 17 -> 16, 18 -> 17.
Example 3:
Input: [20,30,100,110,120]
Output: 3
Explanation: Friend requests are made 110 -> 100, 120 -> 110, 120 -> 100.
Friends Of Appropriate Ages Java Solution
Approach 1:
We can use binary search here. If person B's range comes in 0.5 * age[A] + 7 then person A can sent friend request. Other two conditions became true if we sort the array.
Java Program:
class Solution { public int numFriendRequests(int[] ages) { int ans = 0; Arrays.sort(ages); for(int i = 0; i < ages.length; i++) { int age = ages[i]; //upper can be i but in same ages upper change //so need to find upper index also int upper = findIndex(ages, age); //lower index is from where all the ages comes in //range age[A]*.5 + 7 int lower = findIndex(ages, ((age/2)+7)); ans += Math.max(upper-lower-1, 0); } return ans; } //binary search public static int findIndex(int[] ages, int target) { int start = 0; int end = ages.length-1; while(start <= end) { int mid = start + (end - start) / 2; if(ages[mid] <= target) start = mid + 1; else end = mid-1; } return start; } }
- LeetCode - Kids with greatest number of candies
- LeetCode - Next greater Element 1
- LeetCode - Running Sum of 1d array
- LeetCode - Shuffle the Array
- LeetCode - Number of good pairs
Comments
Post a Comment