Menu
CoddyTech

Job Sequencing Problem

لديك n وظيفة ممثلة بمصفوفتين: تحقق الوظيفة i ربحًا قدره profit[i] إذا انتهت بحلول الوقت deadline[i]. تستغرق كل وظيفة وحدة زمنية واحدة، وتنفذ وظيفة واحدة في كل مرة بدءًا من الوقت 0، ويمكنك تخطي أي وظيفة. يمكن تنفيذ وظيفة موعدها النهائي 2 من 0 إلى 1 أو من 1 إلى 2.

أعِد أكبر ربح إجمالي يمكنك تحقيقه.

الدالة

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
الوقت الذي يجب أن تُنجَز فيه كل مهمة، من 1 إلى n
profitinteger-array
ما تكسبه كل مهمة؛ profit[i] مرتبط بـ deadline[i]
تُرجعinteger
أكبر إجمالي ربح للوظائف التي يمكن أن تنتهي جميعها بحلول مواعيدها النهائية

القيود

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n، حيث إن n هو عدد المهام
  • 1 ≤ profit[i] ≤ 105
  • المصفوفات غير مرتبة. قد تتشارك عدة مهام الموعد النهائي أو الربح.

أمثلة

المدخلات
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
المخرجات
120
الشرح
لا تتسع المهلة 1 إلا لمهمة واحدة من المهمتين، لذا نفّذ المهمة التي قيمتها 50. ثم تنتهي المهمة التي قيمتها 30 عند موعدها النهائي 2، والمهمة التي قيمتها 40 عند موعدها النهائي 3: 50 + 30 + 40 = 120.
challenge icon

سؤال إضافي

ماذا لو كانت المهمة i تستغرق duration[i] وحدة زمنية بدلًا من وحدة واحدة؟ هل يظل إنجاز المهمة الأكثر ربحًا أولًا يؤدي إلى أفضل إجمالي؟

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

اختبار #1

اختبار #2

اختبار #3

الوسائط

deadline = [3, 1, 2, 3, 1]
profit = [40, 35, 30, 25, 50]

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

120