Menu
CoddyTech

K Closest Points to Origin

ŚrednieKopiecSortowaniepython iconjava iconcpp iconc iconjs icon+10

Dostajesz n punktów na płaszczyźnie: punkt i ma współrzędne (xs[i], ys[i]). Zwróć k punktów najbliższych początkowi układu współrzędnych (0, 0), każdy jako para [x, y].

Uporządkuj odpowiedź według odległości od początku układu współrzędnych, zaczynając od najbliższego punktu. Punkty w tej samej odległości uporządkuj najpierw rosnąco według x, a następnie według y. Punkt występujący na liście więcej niż raz liczy się osobno za każdym wystąpieniem.

Funkcja

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
współrzędna x każdego punktu
ysinteger-array
współrzędna y każdego punktu
kinteger
ile punktów zwrócić
Zwracainteger-2d-array
k najbliższych punktów jako pary [x, y], od najbliższego, a w przypadku remisów według x, a następnie y

Ograniczenia

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Punkty mogą się powtarzać; każda kopia jest osobnym punktem.

Przykłady

Wejście
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Wyjście
[[-1, 2], [2, -2]]
Wyjaśnienie
Kwadraty odległości wynoszą 10, 5, 8 i 25. Dwie najmniejsze wartości odpowiadają kolejno punktom (-1, 2) z wartością 5 i (2, -2) z wartością 8.
challenge icon

Pytanie dodatkowe

Punkty będą teraz pojawiać się pojedynczo, a po każdym z nich musisz podać k najbliższych punktów spośród dotychczas otrzymanych. Ile pamięci potrzebujesz?

Zresetuj kod
def kClosest(xs, ys, k):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

xs = [3, -1, 2, 0]
ys = [1, 2, -2, 5]
k = 2

Oczekiwany wynik

[[-1, 2], [2, -2]]