Algunas personas van a enviar solicitudes de amistad. La lista de sus edades se da y ages[i]
es la edad de la persona i.
Una persona no va a amigo solicitud de la persona B si alguna de las siguientes condiciones son verdaderas (B = A!):
age[B] <= 0.5 * age[A] + 7
age[B] > age[A]
age[B] > 100 && age[A] < 100
De lo contrario, una voluntad solicitud de amigo B.
Tenga en cuenta que si A pide a B, B no significa necesariamente petición A. Además, la gente no amigo solicitud de ellos mismos.
¿Cuántas total de solicitudes de amistad se hacen?
Ejemplo 1:
Entrada: [16,16] de salida: 2 Explicación: 2 personas Solicitud de amistad entre sí.
Ejemplo 2:
Entrada: [16,17,18] de salida: 2 Explicación: Solicitudes de amistad se hacen 17 -> 16, 18 -> 17.
Ejemplo 3:
Entrada: [20,30,100,110,120] Salida: Explicación: Solicitudes de amistad se hacen 110 -> 100, 120 -> 110, 120 -> 100.
notas:
1 <= ages.length <= 20000
.1 <= ages[i] <= 120
.
clase de soluciones { pública int numFriendRequests ( int [] edades) { Mapa <Integer, Integer> mapa = nuevo HashMap <> (); int ans = 0 ; para ( int num: edades) { map.put (num, map.getOrDefault (num, 0) + 1 ); } Para ( int a: map.keySet ()) { a ( int b: map.keySet ()) { si (! IsValid (a, b)) { continúe ; } Si (a == b) { ans + = map.get (a) * (map.get (a) - 1 ); } Más { ans + = map.get (a) * map.get (b); } } } Volver ans; } Privada boolean isValid ( int a, int b) { si (b <= 0,5 * a + 7 || b> a || b> a && un <100 ) { retorno falsa ; } Devolver cierto ; } }