Giả sử chúng ta có một danh sách các nhiệm vụ và một danh sách những người khác. Nhiệm vụ [i] xác định lượng sức mạnh cần thiết để thực hiện nhiệm vụ thứ i. Và những người [i] quyết định lượng sức mạnh mà người thứ i có. Cuối cùng, chúng ta phải tìm số lượng nhiệm vụ có thể hoàn thành nếu một người có thể thực hiện nhiều nhất một nhiệm vụ.
Vì vậy, nếu đầu vào giống như nhiệm vụ =[4, 3, 9, 15], people =[10, 5, 3, 2], thì đầu ra sẽ là 3, vì người đầu tiên có thể thực hiện nhiệm vụ 9, người thứ hai có thể thực hiện nhiệm vụ 4, người thứ ba có thể thực hiện nhiệm vụ 3 và người thứ tư không thể thực hiện bất kỳ nhiệm vụ nào.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- sắp xếp các nhiệm vụ trong danh sách, sắp xếp danh sách mọi người
- ct:=0, ind:=0
- đối với tôi trong phạm vi từ 0 đến cỡ người, hãy thực hiện
- đối với j trong phạm vi tương ứng với kích thước của nhiệm vụ, hãy thực hiện
- nếu people [i]> =task [j], thì
- ct:=ct + 1
- ind:=ind + 1
- ra khỏi vòng lặp
- nếu không,
- ra khỏi vòng lặp
- nếu people [i]> =task [j], thì
- đối với j trong phạm vi tương ứng với kích thước của nhiệm vụ, hãy thực hiện
- trả lại ct
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, tasks, people): tasks.sort() people.sort() ct=0 ind=0 for i in range(len(people)): for j in range(ind,len(tasks)): if people[i]>=tasks[j]: ct+=1 ind+=1 break else: break return ct ob = Solution() tasks = [4, 3, 9, 15] people = [10, 5, 3, 2] print(ob.solve(tasks, people))
Đầu vào
[4, 3, 9, 15], [10, 5, 3, 2]
Đầu ra
3