Friends Of Appropriate Ages LeetCode solution in Java
1class Solution {2static int upperBound(int arr[], int target) {3int l = 0, h = arr.length - 1;4for (; l <= h; ) {5int mid = (l + h) >> 1;6if (arr[mid] <= target) l = mid + 1;7else h = mid - 1;8}9return l;10}1112public int numFriendRequests(int[] ages) {13long ans = 0;14Arrays.sort(ages);15// traversing order doesn't matter as we are doing binary-search in whole array16// you can traverse from left side also17for (int i = ages.length - 1; i >= 0; --i) {18int k = upperBound(ages, ages[i] / 2 + 7);19int t = upperBound(ages, ages[i]);20ans += Math.max(0, t - k - 1);21}22return (int) ans;23}24}