Menu
CoddyTech

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 في الموضع الثاني.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

اختبار #3

وسيط

nums = [3, 1, 2]

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

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