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]]