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

Combination Sum

متوسطالتراجعpython iconjava iconcpp iconc iconjs icon+10

لديك قائمة candidates تضم أعدادًا صحيحة موجبة مختلفة، وعددًا صحيحًا موجبًا target. أوجد كل تركيبة من عناصر القائمة يكون مجموع قيمها مساويًا تمامًا لـ target، مع إمكانية استخدام كل عنصر أي عدد من المرات. تُعد تركيبتان متماثلتين إذا استخدمتا القيم نفسها العدد نفسه من المرات، لذا تُحتسب [2, 3, 3] و[3, 2, 3] مرة واحدة.

أعِد كل تركيبة بحيث تكون قيمها بترتيب تصاعدي، ورتّب التركيبات ترتيبًا معجميًا: قارن بين تركيبتين قيمةً قيمةً من اليسار، وتأتي أولًا التركيبة التي تحتوي على القيمة الأصغر عند أول موضع اختلاف.

الدالة

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
القيم المختلفة التي يمكنك استخدامها، بأي ترتيب، وبالعدد الذي تريده من المرات
targetinteger
يجب أن يصل مجموع كل تركيبة إلى القيمة المحددة تمامًا
تُرجعinteger-2d-array
كل مجموعة من العناصر التي يكون مجموعها مساويًا للهدف، مع ترتيب عناصر كل مجموعة تصاعديًا، ثم إدراج المجموعات بترتيب معجمي

القيود

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • جميع القيم في candidates مختلفة، وليس لها ترتيب محدد.
  • تصل مجموعة واحدة على الأقل إلى target، ولا يزيد عدد المجموعات التي تصل إليه على 150.

أمثلة

المدخلات
candidates = [6, 2, 3]target = 8
المخرجات
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
الشرح
أربعة أعداد 2 تساوي 8، وكذلك 2 + 3 + 3 و2 + 6. تبدأ الحالات الثلاث كلها بالعدد 2، لذا تحدد القيمة الثانية الترتيب: 2، ثم 3، ثم 6. من دون 2، لا يبقى لديك سوى أعداد 3 و6، وكل مزيج منها هو مضاعف للعدد 3، بينما 8 ليس كذلك.

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

challenge icon

سؤال إضافي

يمكن الآن استخدام كل مرشح مرة واحدة على الأكثر، وقد تحتوي candidates على قيم مكررة. كيف تغيّر البحث بحيث لا يظهر أي تركيب مرتين؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

candidates = [6, 2, 3]
target = 8

المتوقع

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]