Cho danh sách tasks (độ khó nhiệm vụ) và people (sức mạnh người). Mỗi người chỉ làm tối đa một nhiệm vụ, sức mạnh phải >= độ khó. Tìm số nhiệm vụ tối đa có thể hoàn thành.
Ví dụ, tasks = [4, 3, 9, 15], people = [10, 5, 3, 2], đầu ra 3.
Các bước giải quyết:
- Sắp xếp
tasksvàpeople. ct := 0,ind := 0.- Duyệt từng người
i:- Duyệt nhiệm vụ từ
ind:- Nếu
people[i] >= tasks[j]:ct++,ind++, thoát vòng lặp nhiệm vụ. - Ngược lại thoát vòng lặp nhiệm vụ.
- Nếu
- Duyệt nhiệm vụ từ
- Trả về
ct.
Ví dụ minh họa
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