Menu
CoddyTech
flag Ar iconالعربيةdown icon

3Sum

لديك قائمة من الأعداد الصحيحة nums. أوجد كل ثلاثية [a, b, c] من القيم المأخوذة من ثلاثة مواضع مختلفة في nums بحيث a + b + c = 0. اكتب كل ثلاثية بترتيب غير تنازلي (a ≤ b ≤ c)، وأدرج كل ثلاثية مميزة مرة واحدة، حتى عندما تنتجها اختيارات متعددة للمواضع. أعد الثلاثيات مرتبة حسب قيمتها الأولى، ثم حسب قيمتها الثانية.

الدالة

threeSum(nums: integer-array) → integer-2d-array
numsinteger-array
قائمة الأعداد الصحيحة، التي تحتوي على ثلاثة عناصر على الأقل
تُرجعinteger-2d-array
كل ثلاثية متميزة مجموعها 0، مرتبة كل منها ترتيبًا غير تنازلي، والقائمة مرتبة

القيود

  • 3 ≤ nums.length ≤ 3000
  • -105 ≤ nums[i] ≤ 105
  • مجموع ثلاثية واحدة على الأقل يساوي 0.
  • تكون ثلاثيتان متماثلتين عندما تحتويان على القيم الثلاث نفسها.

أمثلة

المدخلات
nums = [-2, 0, 1, 1, -1, 2]
المخرجات
[[-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]
الشرح
-2 + 0 + 2 و-2 + 1 + 1 و-1 + 0 + 1 جميعها تساوي 0. قد تستخدم [-2, 1, 1] القيمة 1 مرتين لأن 1 موجودة في موضعين، بينما يمكن تكوين [-1, 0, 1] باستخدام أيٍّ من القيمتين 1، لكنها تظهر مرة واحدة.

lock icon+15 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

النمط نفسه يحل مسألة 4Sum: ثبّت قيمتين واستخدم مؤشرين على العناصر المتبقية. هل يمكنك كتابته بتعقيد O(n³) مع التعامل الصحيح مع التكرارات في كل مستوى؟

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

الحالة 1

الحالة 2

المدخلات

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

المتوقع

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