思路
因为题目提到了1 <= ages[i] <= 120,所以可以联想到用一个121长度的整型数组来记录每个年龄的人数
解题过程
然后再计算两个年龄之间是否可以发消息,如果可以请求总数加上arr[i]arr[j],当两个年龄段相等时单独讨论(此时只需看ages[y] <= 0.5 * ages[x] + 7是否满足,如果不满足则可以发消息,请求总数加上arri)
Code
class Solution {
public int numFriendRequests(int[] ages) {
int arr[]=new int[121];
for(int i=0;i<ages.length;i++){
arr[ages[i]]++;
}
int ans=0;
for(int i=1;i<121;i++){
if(arr[i]==0) continue;
for(int j=1;j<121;j++){
if(arr[j]==0) continue;
if(i==j&&0.5*i+7<j){
ans=ans+arr[i]*(arr[i]-1);
continue;
}
if(0.5*i+7>=j||i<j||(i<100&&j>100)){
continue;
}else{
ans+=arr[i]*arr[j];
}
}
}
return ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/friends-of-appropriate-ages/solutions/2991635/gua-ling-de-peng-you-by-ashi-jian-chong-qo9l2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。