1393. 适龄的朋友
中文English
有些人会提出好友请求。 给定他们的年龄列表,其中age[i]是第i个人的年龄。
如果满足以下任一条件,则A不会向B(B!= A)提出好友请求:
- age[B] <= 0.5 * age[A] +7
- age[B]>age[A]
- age[B]> 100 && age[A] <100
否则,A会向B发起好友请求.
请注意,如果A请求B,B不一定请求A。此外,人们不会向自己发出好友请求。
总共有多少好友请求被发出?
样例
样例 1:
输入: [16,16]
输出: 2
解释: 两个人互相发出好友请求.
样例2:
输入: [16,17,18]
输出: 2
解释: 以下好友请求被发出 17 -> 16, 18 -> 17.
样例3:
输入: [20,30,100,110,120]
输出: 3
解释: 以下好友请求被发出 110 -> 100, 120 -> 110, 120 -> 100.
注意事项
- 1 <= ages.length <= 20000.
- 1 <= ages[i] <= 120.
class Solution: ''' age[B] <= 0.5 * age[A] +7 age[B]>age[A] age[B]> 100 && age[A] <100 ''' def numFriendRequests(self, ages): if not ages: return 0 age_to_count = {} count = 0 for age in ages: age_to_count[age] = age_to_count.get(age, 0) + 1 #循环对应字典的age,和对应的count for age1 in age_to_count.keys(): for age2 in age_to_count.keys(): if not(age2 <= 0.5*age1 + 7 or age2 > age1 or (age2 > 100 and age1 < 100)): if age1 == age2: #年龄相等,减去自身就好了 count += age_to_count[age1] * (age_to_count[age2] - 1) else: count += age_to_count[age1] * age_to_count[age2] return count