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

Subsets

تُعطى قائمة nums تحتوي على أعداد صحيحة مختلفة. أعد كل مجموعة جزئية منها، بما في ذلك المجموعة الفارغة والقائمة كاملة، بحيث تعطي n قيم 2^n مجموعة جزئية. اكتب قيم كل مجموعة جزئية بترتيب تصاعدي، ورتّب المجموعات الجزئية ترتيبًا معجميًا: قارن بين مجموعتين جزئيتين قيمةً بقيمة، ويحدد أول اختلاف الترتيب، وتأتي المجموعة الجزئية التي تشكّل بداية مجموعة أخرى قبلها. بالنسبة إلى [1, 2]، تكون الإجابة [[], [1], [1, 2], [2]].

الدالة

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
القيم، كلها مختلفة، بأي ترتيب
تُرجعinteger-2d-array
كل مجموعة جزئية مرتبة تصاعديًا، ومُدرجة بترتيب معجمي

القيود

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • جميع القيم في nums مختلفة.
  • nums قد تأتي بأي ترتيب.

أمثلة

المدخلات
nums = [3, 1, 2]
المخرجات
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
الشرح
بعد الترتيب، تكون القيم 1 و2 و3، وتعطي ثلاث قيم 2^3 = 8 مجموعات جزئية. تأتي [1, 2] قبل [1, 2, 3] لأنها بادئته، وتأتي [1, 2, 3] قبل [1, 3] لأن 2 أصغر من 3 في الموضع الثاني.

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

challenge icon

سؤال إضافي

هل يمكنك إنشاء القائمة نفسها دون استخدام الاستدعاء الذاتي، مع بناء كل مجموعة جزئية مباشرةً من المجموعة التي تسبقها؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [3, 1, 2]

المتوقع

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]