Bueno yo me fui a la documentaci贸n porque no sabia mucho sobre el modulo heapq y en ella vi la solucion al problema pues los elementos del heap tambi茅n pueden ser tuplas (prioridad, valor) en este caso mi prioridad es la distancia y mi valor es el punto, sabiendo que el m茅todo heappop() devuelve el elemento m谩s peque帽o, al usar tuplas se devuelve el par (distancia, punto) con la distancia m谩s peque帽a lo que es genial! para resolver el problema en unos pocos pasos 馃榿, aqui les dejo mi soluci贸n
import heapq
import math
from typing import List
def kClosest(puntos: List[List[int]], K: int) -> List[List[int]]:
heap = []
for punto in puntos:
distance = math.sqrt((punto[0]**2) + (punto[1]**2))
heapq.heappush(heap, (distance, punto))
#print(heapq.heappop(heap))
k_puntos = [heapq.heappop(heap)[1] for _ in range(K)]
return k_puntos
response = kClosest([[1,3], [3,4], [5,6]], 1)
print(response)
response = kClosest([[13,-8], [1,20], [-5,5]], 2)
print(response)
Want to see more contributions, questions and answers from the community?