一部の人々は、友達のリクエストを行います。自分の年齢のリストが与えられたとされる ages[i]
i番目の人物の年齢です。
人物A、以下の条件のいずれかに該当する場合友申請者B(B = A!)しません。
age[B] <= 0.5 * age[A] + 7
age[B] > age[A]
age[B] > 100 && age[A] < 100
それ以外の場合は、意志の友達リクエストB.
注AはBを要求した場合、Bはまた、必ずしも要求A.しないことを、人々はしません友達リクエストそのもの。
どのように多くの総友達リクエストを作っていますか?
例1:
入力:[16,16] 出力:2 説明:2人の友人同士を要求します。
例2:
入力:[16,17,18] 出力:2 説明:友達リクエストが17作られています- > 16、18 - > 17。
例3:
入力:[20,30,100,110,120] 出力: 説明:友達リクエスト110作られる- > 100、120 - > 110、120 - > 100。
ノート:
1 <= ages.length <= 20000
。1 <= ages[i] <= 120
。
クラスのソリューション{ 公共 のint numFriendRequests(INT []歳){ 地図 <整数、整数>マップ= 新しい HashMapの<> (); int型 ANS = 0 ; 用(INT :年齢NUM){ map.put(NUM、map.getOrDefault(NUM、 0)+ 1 )。 } のための(INT :map.keySet()){ ための(int型B:map.keySet()){ 場合(!はisValid(B)){ 続けます。 } もし(== B){ ANS + = map.get()*(map.get() - 1 )。 } 他{ ANS + = map.get()* map.get(B)。 } } } 戻りANS。 } プライベート ブールのisValid(int型 A、int型B){ 場合(B <= 0.5×A + 7 || B> || B> && <100 ){ 戻り 偽。 } を返す 真。 } }