Menu
CoddyTech

Activity Selection Problem

Hoạt động i diễn ra từ thời điểm start[i] đến thời điểm finish[i]. Một người chỉ thực hiện một hoạt động tại một thời điểm, và hoạt động tiếp theo phải bắt đầu sau khi hoạt động trước đó kết thúc: hoạt động bắt đầu đúng vào thời điểm một hoạt động khác kết thúc không thể diễn ra tiếp theo.

Trả về số lượng hoạt động lớn nhất mà một người có thể thực hiện.

Hàm

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
thời gian bắt đầu của mỗi hoạt động
finishinteger-array
thời điểm kết thúc của mỗi hoạt động; finish[i] tương ứng với start[i]
Trả vềinteger
số hoạt động nhiều nhất mà một người có thể thực hiện lần lượt

Ràng buộc

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • Một hoạt động có thể bắt đầu và kết thúc cùng lúc. Các mảng không được sắp xếp.

Ví dụ

Đầu vào
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
Đầu ra
4
Giải thích
Thực hiện các khoảng từ 10 đến 13, từ 14 đến 19, từ 21 đến 22 và từ 25 đến 30 sẽ được 4. Không thể đạt 5: khoảng từ 10 đến 13 xung đột với khoảng từ 12 đến 16, và khoảng từ 21 đến 22 xung đột với khoảng từ 20 đến 24.
challenge icon

Câu hỏi mở rộng

Giờ đây, hai người làm việc song song, mỗi người thực hiện từng hoạt động một. Họ có thể cùng làm bao nhiêu hoạt động, và mỗi người nên đảm nhận hoạt động nào?

Đặt lại code
def maxActivities(start, finish):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

Đầu ra mong đợi

4