zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    PLSQL游标
    SqlHelper助手
    机房重构前奏——三层转七层
    应用运筹管理经济
    C++——宏观把控
    操作系统——宏观把控
    .NET总结一
    深复制与浅复制
    设计模式之结构型
    设计模式之一对多
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/14147647.html
Copyright © 2011-2022 走看看