Introducción

1

¿Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?

Lista Enlazada

2

Estructura de datos: Lista Enlazada

3

Programando listas enlazadas con Java

4

Cómo Invertir una Lista Enlazada

5

Odd Even Linked List: análisis del problema

6

Solución de Odd Even Linked List

7

Playground: Odd Even Liked List

8

Programando Odd Even Linked List con C++

9

Linked List Cycle: análisis del problema

10

Solución de Linked List Cycle

11

Playground: Linked List Cycle

12

Programando Linked List Cycle con Python

13

Palindrome Linked List: análisis del problema

14

Solución de Palindrome Linked List

15

Playground: Palindrome Linked List

16

Programando Palindrome Linked List con Java

17

Reorder List: análisis del problema

18

Solución de Reorder List

19

Programando Reorder List con JavaScript

20

Playground: Reorder List Without Repeated Values

21

Reto: LRU Caché

22

Ejercicios Prácticos con Listas Enlazadas y Historial de Navegador

23

Operaciones con Listas Enlazadas: Suma, Intercambio y Navegador

Pilas y colas

24

Estructura de datos: Pilas y Colas

25

Paréntesis Válido: análisis del problema

26

Solución de Paréntesis Válido

27

Playground: Paréntesis Válido

28

Programando Paréntesis Válido con C++

29

Comparación de Cadenas con Backspaces

Colas de prioridad

30

Estructura de datos: Colas de Prioridad

31

K Closest Points to Origin: análisis del problema

32

Solución de K Closest Points to Origin

33

Playground: K Closest Points to Origin

34

Programando K Closest Points to Origin con Python

35

Reorganize String: análisis del problema

36

Solución de Reorganize String

37

Playground: Reorganize String

38

Programando Reorganize String con Python

39

Colas de Prioridad: Ejercicios Prácticos y Soluciones

40

Colas de Prioridad y Gestión de Eventos

Próximos pasos

41

Toma el Curso Avanzado de Algoritmos: Grafos y Árboles

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Playground: K Closest Points to Origin

33/41

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

My Solution!! ![](https://static.platzi.com/media/user_upload/upload-11167082-4e53-429b-a5bb-ce230e29dec2.png)
Mi solución (sin usar heapq, ya que no estoy familiarizado, ahora veré la de la profe para ver cómo sería con ese enfoque): ```python import heapq from typing import List def kClosest(points: List[List[int]], K: int) -> List[List[int]]: distances = {} counter = 0 for point in points: x, y = point[0], point[1] distance = (x * x + y * y) ** (0.5) distances[counter] = distance counter += 1 distances = dict(sorted(distances.items(), key=lambda item:item[1])) counter = 0 result = [] for key in distances.keys(): result.append(points[key]) counter += 1 if (counter == K): break return result response = kClosest([[1,3], [3,4], [5,6]], 1) print(response) response = kClosest([[13,-8], [1,20], [-5,5]], 2) print(response) ```
propuesta: `import heapqfrom typing import List` `def kClosest(puntos: List[List[int]], K: int) -> List[List[int]]: heap = [] for punto in puntos: x, y = punto distancia_cuadrada = x*x + y*y heapq.heappush(heap, (-distancia_cuadrada, punto)) if len(heap) > K: heapq.heappop(heap) return [punto for _, punto in heap]` `response = kClosest([[1,3], [3,4], [5,6]], 1)print(response)` `response = kClosest([[13,-8], [1,20], [-5,5]], 2)print(response)`
mi solución ```java import heapq from typing import List def kClosest(puntos: List[List[int]], K: int) -> List[List[int]]: # Tu código aquí 👇 min_heap = [] for (x,y) in puntos: dist = x**2 + y**2 heapq.heappush(min_heap, (dist, [x, y])) closest_points = [] for _ in range(K): closest_points.append(heapq.heappop(min_heap)[1]) return closest_points ```
Mi respuesta: ![](https://static.platzi.com/media/user_upload/image-3521a92d-ca7d-4b8e-a933-d3916114834b.jpg)

Use la func ‘dist’ del modulo math para sacar las distancias

import heapq
from math import dist
from typing import List

def kClosest(puntos: List[List[int]], K: int) -> List[List[int]]:
   min_heap = []

   for p in puntos:
      distance = -(dist((0,0), p))
      if len(min_heap) < K:
         heapq.heappush(min_heap, (distance, p))
      else:
         if distance > min_heap[0][0]:
            heapq.heapreplace(min_heap, (distance, p))
   return [i[1] for i in min_heap]

No sé porque no funciono en el playground, decía que error al llamar list pero bueno funcionó, toco con ayuda:


undefined