Menu
CoddyTech

4Sum

تُعطى قائمة أعداد صحيحة nums وعدد صحيح target. أعد كل رباعية [a, b, c, d] تكون قيمها الأربع في مواضع مختلفة من nums ويكون مجموعها target. اكتب قيم كل رباعية بترتيب غير تنازلي. إذا أمكن اختيار القيم الأربع نفسها من مواضع مختلفة، فتظهر الرباعية مرة واحدة فقط. رتّب الإجابة حسب القيمة الأولى، ثم الثانية، ثم الثالثة. إذا لم تنطبق أي رباعية، فأعد قائمة فارغة.

الدالة

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
الأرقام للاختيار منها، رقم واحد على الأقل
targetinteger
المجموع الذي يجب أن يبلغه كل رباعي
تُرجعinteger-2d-array
الرباعيات المتميزة التي يكون مجموعها target، وكل رباعية منها مرتبة، والقائمة مرتبة أيضًا؛ وقائمة فارغة إذا لم توجد أيٌّ منها

القيود

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • يقع مجموع أي أربع قيم بين -4 × 108 و4 × 108، لذا فهو يتسع في عدد صحيح ذي 32 بت.
  • تُعَدّ الرباعيات التي تحتوي على القيم الأربع نفسها واحدةً.

أمثلة

المدخلات
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
المخرجات
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
الشرح
مجموع كل مجموعة من المجموعات الرباعية الأربع يساوي 1، على سبيل المثال -3 + (-1) + 2 + 3. تأتي أولًا المجموعتان اللتان تبدآن بـ -3، مرتبتين حسب قيمتهما الثانية: -1 قبل 0.
challenge icon

سؤال إضافي

احسب عدد مجموعات المواضع الأربعة التي يكون مجموع قيمها مساويًا لـ target، بدلًا من عدد الرباعيات المختلفة. يحتوي المثال الثاني على 15 مجموعة. هل يمكنك فعل ذلك في O(n²)؟

إعادة ضبط الشيفرة
def fourSum(nums, target):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

الإخراج المتوقع

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]