Menu
CoddyTech

Coin Change

لديك قائمة coins تضم قيمًا مختلفة للعملات ومبلغًا مستهدفًا amount. يمكنك استخدام كل قيمة من قيم العملات أي عدد من المرات. أعد أقل عدد من العملات التي تجمع قيمها إلى amount بالضبط، أو -1 إذا لم تصل أي مجموعة من العملات إلى هذا المبلغ. المبلغ 0 لا يحتاج إلى أي عملات.

الدالة

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
قيم العملات المختلفة، ويمكن استخدام كلٍّ منها أي عدد من المرات
amountinteger
إجمالي المبلغ المطلوب دفعه بالضبط
تُرجعinteger
أقل عدد من العملات اللازمة، أو ‎-1 إذا تعذّر تكوين المبلغ

القيود

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • جميع قيم العملات مختلفة.

أمثلة

المدخلات
coins = [2, 5, 10]amount = 27
المخرجات
4
الشرح
10 + 10 + 5 + 2 تساوي 27 باستخدام أربع عملات. ثلاث عملات لا تكفي: 27 عدد فردي، لذا يحتاجون إلى 5 واحدة بالضبط، والاثنتان الأخريان مجموعهما 20 كحد أقصى، وهو أقل من 22.
challenge icon

سؤال إضافي

هل يمكنك حساب عدد التوليفات المختلفة من العملات التي يساوي مجموعها amount، بدلًا من إيجاد أقل عدد من العملات؟

إعادة ضبط الشيفرة
def coinChange(coins, amount):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

coins = [2, 5, 10]
amount = 27

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

4