Menu
CoddyTech

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، و2 + 3 + 3، و2 + 6، كلها تساوي 8، مرتبة حسب قيمتها الثانية. من دون 2، لا يتبقى سوى 3 و6، ومجاميعها من مضاعفات 3، بينما 8 ليس كذلك.
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]]