Menu
CoddyTech

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] مبلغ 13. لا يكلّف أي تقسيم مبلغ 12: فتعبئة الأجزاء من اليسار إلى اليمين ضمن 12 تعطي [6, 2]، [9]، [4, 7]، [3]، أي أربعة أجزاء.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

اختبار #3

الوسائط

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

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

13