题目:2410. 运动员和训练师的最大匹配数
思路:排序+双指针,时间复杂度0(nlogn)。
C++版本:
class Solution {
public:
int matchPlayersAndTrainers(vector<int>& players, vector<int>& trainers) {
sort(players.begin(),players.end());
sort(trainers.begin(),trainers.end());
int n=players.size(),m=trainers.size();
for(int i=0,j=0;i<n;i++){
while(j<m&&trainers[j]<players[i]) j++;
if(j==m) return i;
j++;
}
return n;
}
};
JAVA版本:
class Solution {
public int matchPlayersAndTrainers(int[] players, int[] trainers) {
Arrays.sort(players);
Arrays.sort(trainers);
int n=players.length,m=trainers.length;
for(int i=0,j=0;i<n;i++){
while(j<m&&trainers[j]<players[i]) j++;
if(j==m) return i;
j++;
}
return n;
}
}
GO版本:
func matchPlayersAndTrainers(players []int, trainers []int) int {
n,m:=len(players),len(trainers)
slices.Sort(players)
slices.Sort(trainers)
for i,j:=0,0;i<n;i++ {
for j<m && trainers[j]<players[i] {
j++
}
if j==m {
return i;
}
j++
}
return n;
}