class Solution:
def matchPlayersAndTrainers(self, players: List[int], trainers: List[int]) -> int:
sorted_players = Solution.sort(self, players)
sorted_trainers = Solution.sort(self, trainers)
i = 0
j = 0
num_matches = 0
while i < len(sorted_players) and j < len(sorted_trainers):
if sorted_players[i] <= sorted_trainers[j]:
num_matches += 1
i += 1
j += 1
else:
j += 1
return num_matches
def sort(self, nums: List[int]) -> List[int]:
if len(nums) == 1:
return nums
mid = len(nums) // 2
left_merge_arr = nums[0: mid]
right_merge_arr = nums[mid:]
left_sort = Solution.sort(self,left_merge_arr)
right_sort = Solution.sort(self, right_merge_arr)
return Solution.merge(left_sort, right_sort)
def merge(left_arr, right_arr):
merged_arr = []
i = 0
j = 0
while i < len(left_arr) and j < len(right_arr):
if left_arr[i] < right_arr[j]:
merged_arr.append(left_arr[i])
i = i + 1
elif left_arr[i] > right_arr[j]:
merged_arr.append(right_arr[j])
j = j + 1
else:
merged_arr.append(right_arr[j])
merged_arr.append(left_arr[i])
i += 1
j += 1
while i < len(left_arr):
merged_arr.append(left_arr[i])
i = i + 1
while j < len(right_arr):
merged_arr.append(right_arr[j])
j = j + 1
return merged_arr