Menu
CoddyTech

K Closest Points to Origin

На плоскости даны n точек: точка i имеет координаты (xs[i], ys[i]). Верните k точек, ближайших к началу координат (0, 0), каждую в виде пары [x, y].

Упорядочьте ответ по расстоянию от начала координат: сначала ближайшие точки. Если расстояния одинаковы, сначала укажите точку с меньшим x, затем — с меньшим y. Точка, указанная несколько раз, учитывается отдельно для каждого вхождения.

Функция

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
координата x каждой точки
ysinteger-array
координата y каждой точки
kinteger
сколько баллов вернуть
Возвращаетinteger-2d-array
k ближайших точек в виде пар [x, y], сначала ближайшие; при равенстве расстояний — сначала по x, затем по y

Ограничения

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Баллы могут повторяться; каждый экземпляр считается отдельным баллом.

Примеры

Ввод
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Вывод
[[-1, 2], [2, -2]]
Пояснение
Квадраты расстояний равны 10, 5, 8 и 25. Два наименьших значения соответствуют (-1, 2) со значением 5 и (2, -2) со значением 8, именно в таком порядке.
challenge icon

Дополнительный вопрос

Теперь точки поступают по одной, и после каждой из них нужно сообщать о k ближайших на данный момент. Сколько памяти вам нужно?

Сбросить код
def kClosest(xs, ys, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

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

Ожидаемый вывод

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