Friends Of Appropriate Ages LeetCode solution in Java

1
class Solution {
2
static int upperBound(int arr[], int target) {
3
int l = 0, h = arr.length - 1;
4
for (; l <= h; ) {
5
int mid = (l + h) >> 1;
6
if (arr[mid] <= target) l = mid + 1;
7
else h = mid - 1;
8
}
9
return l;
10
}
11

12
public int numFriendRequests(int[] ages) {
13
long ans = 0;
14
Arrays.sort(ages);
15
// traversing order doesn't matter as we are doing binary-search in whole array
16
// you can traverse from left side also
17
for (int i = ages.length - 1; i >= 0; --i) {
18
int k = upperBound(ages, ages[i] / 2 + 7);
19
int t = upperBound(ages, ages[i]);
20
ans += Math.max(0, t - k - 1);
21
}
22
return (int) ans;
23
}
24
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0