1393. 适龄的朋友

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 

 

posted @ 2020-12-17 02:46  风不再来  阅读(177)  评论(0编辑  收藏  举报