1626. Best Team With No Conflicts
Solution
public int bestTeamScore(int[] scores, int[] ages) {
int N = ages.length;
int[][] candidates = new int[N][2];
for(int i = 0; i < N; i++){
candidates[i][0] = scores[i];
candidates[i][1] = ages[i];
}
Arrays.sort(candidates, (a,b)-> a[1]==b[1] ? a[0] - b[0] : a[1] - b[1]);
int ret = 0;
int[] dp = new int[N]; //dp[i] : the max score witch ends in candidates[i]
for(int i = 0; i < N; i++){
dp[i] = candidates[i][0];
for(int j = 0 ; j < i; j++){
if(candidates[j][0] <= candidates[i][0]){
dp[i] = Math.max(dp[i], dp[j] + candidates[i][0]);
}
}
ret = Math.max(ret, dp[i]);
}
return ret;
}
Last updated
Was this helpful?