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

Split Array Largest Sum

لديك مصفوفة nums من الأعداد الصحيحة غير السالبة، وعدد صحيح k. قسّم nums إلى k أجزاء بالضبط، بحيث يكون كل جزء سلسلة غير فارغة من القيم المتجاورة، وتحافظ الأجزاء على ترتيبها. لكل جزء مجموع، وتكلفة التقسيم هي الأكبر بين هذه المجاميع.

أعِدّ أقل تكلفة يمكن الوصول إليها عند التقسيم إلى k أجزاء.

الدالة

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
القيم غير السالبة، بالترتيب
kinteger
عدد الأجزاء المتجاورة التي يجب تقطيعها إليها
تُرجعinteger
أصغر قيمة ممكنة لمجموع الجزء الأكبر

القيود

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • يحتوي كل جزء على قيمة واحدة على الأقل. ومجموع قيم الجزء الذي تكون جميع قيمه 0 هو 0، وهذا مسموح به.

أمثلة

المدخلات
nums = [6, 2, 9, 4, 7, 3]k = 3
المخرجات
13
الشرح
التقسيم [6, 2]، [9, 4]، [7, 3] مجموع أجزائه هو 8 و13 و10، لذا تكلفته 13. لا يوجد تقسيم تكلفته 12: فتعبئة الأجزاء من اليسار إلى اليمين بحيث لا يتجاوز مجموع كل جزء 12 تعطينا [6, 2]، [9]، [4, 7]، [3]، أي أربعة أجزاء بينما المسموح ثلاثة فقط.

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

challenge icon

سؤال إضافي

تقرأ كل عملية تحقق جشعة جميع القيم n. باستخدام المجاميع التراكمية، يمكن لعملية التحقق تحديد موضع نهاية كل جزء باستخدام البحث الثنائي بدلًا من ذلك. ما مدى سرعة الطريقة بأكملها عندما تكون k صغيرة وnums طويلة؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [6, 2, 9, 4, 7, 3]
k = 3

المتوقع

13