Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
Devuelve solo elementos con el número máximo de ocurrencias

Digamos que tenemos la siguiente estructura en Kotlin, por ejemplo:

 val allExams = setOf("A", "B", "C", "D", "E", "F") val examMap = mutableMapOf<String, Set<String>>() examMap["1"] = setOf("A","B") examMap["2"] = setOf("A","B","C") examMap["3"] = setOf("A","B","C","D") examMap["4"] = setOf("E") examMap["5"] = setOf("F")

¿Cómo puedo filtrar para mantener solo los elementos del mapa con el número máximo de elementos coincidentes?

En dicho ejemplo, quiero eliminar examMap["1"] y examMap["2"] porque en examMap["3"] tengo "A" , "B" , "C" y "D" (que es el elemento con el número máximo de elementos coincidentes de allExams ). examMap["4"] y examMap["5"] deben mantenerse porque son los únicos elementos del mapa que tienen estos valores.

Así que al final quiero tener el mapa con los siguientes valores:

 examMap["3"] = setOf("A","B","C","D") examMap["4"] = setOf("E") examMap["5"] = setOf("F")
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Esto le dará el resultado esperado:

 val result = mutableMapOf<String, Set<String>>() examMap.toList().sortedByDescending { (_, v) -> v.size } .forEach { if (result.isEmpty() || result.values.none { rList -> rList.containsAll(it.second) }) { result.put(it.first, it.second) } } }

La idea es:

  • primero ordene los Conjuntos en el mapa por set.size descendente. Porque, cuantos más elementos haya en el conjunto, más posibilidades tiene de cubrir otros conjuntos
  • luego comience desde el conjunto más grande, verifique si los conjuntos ya seleccionados (en result ) han contenido todos los elementos en el conjunto actual, para decidir si agregarlo al result

Con la entrada dada, el result será:

 {3=[A, B, C, D], 4=[E], 5=[F]}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!