Menu
CoddyTech

K Closest Points to Origin

בינוניערימהמיוןpython iconjava iconcpp iconc iconjs icon+10

נתונות לך 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]]