Menu
CoddyTech

Job Sequencing Problem

Trung bìnhTham lamSắp xếppython iconjava iconcpp iconc iconjs icon+10

Bạn có n công việc được biểu diễn bằng hai mảng: công việc i mang lại profit[i] nếu hoàn thành trước hoặc đúng thời điểm deadline[i]. Mỗi công việc mất một đơn vị thời gian, bạn chạy từng công việc một, bắt đầu từ thời điểm 0 và có thể bỏ qua bất kỳ công việc nào. Công việc có hạn chót là 2 có thể chạy từ 0 đến 1 hoặc từ 1 đến 2.

Trả về tổng lợi nhuận lớn nhất bạn có thể kiếm được.

Hàm

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
thời hạn hoàn thành của từng công việc, từ 1 đến n
profitinteger-array
thu nhập của từng công việc; profit[i] tương ứng với deadline[i]
Trả vềinteger
tổng lợi nhuận lớn nhất từ các công việc có thể hoàn thành đúng hạn

Ràng buộc

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, trong đó n là số lượng công việc
  • 1 ≤ profit[i] ≤ 105
  • Các mảng không được sắp xếp. Nhiều công việc có thể có cùng hạn chót hoặc lợi nhuận.

Ví dụ

Đầu vào
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Đầu ra
120
Giải thích
Chỉ có một trong hai công việc có hạn chót 1 phù hợp, nên hãy chạy công việc có giá trị 50. Công việc có giá trị 30 hoàn thành đúng hạn chót 2, còn công việc có giá trị 40 hoàn thành đúng hạn chót 3: 50 + 30 + 40 = 120.
challenge icon

Câu hỏi mở rộng

Nếu công việc i mất duration[i] đơn vị thời gian thay vì một đơn vị thì sao? Chọn công việc có lợi nhuận cao nhất trước có còn cho tổng lợi nhuận tốt nhất không?

Đặt lại code
def jobSequencing(deadline, profit):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

120