# 1626. Best Team With No Conflicts
###### tags: `Leetcode` `Medium` `Dynamic Programming`
Link: https://leetcode.com/problems/best-team-with-no-conflicts/
## 思路
如果我们把所有player按照年龄排序,会发现我们其实是找increasing scores sequence 也就变成了[0300. Longest Increasing Subsequence](https://hackmd.io/oPc5yL1oRhGtGP8UdRd3_g)
要注意的是**sort的时候不能只按照年龄排 如果年龄一样 还要按照score排**
不然就会出现[7,1]在[4,2]前面 他们两个如果需要直接比较就不会放在同一个group里 但是如果array是[7,1][7,2][4,2]那么算[7,2]的时候会把[7,1]算进去 [7,2]和[4,2]比较的时候会把[7,2]的值加过去 也就变成[7,1]和[4,2]一组了
## Code
```java=
class Solution {
public int bestTeamScore(int[] scores, int[] ages) {
int n = scores.length;
int[][] players = new int[n][2];
for(int i=0; i<n; i++){
players[i] = new int[]{scores[i], ages[i]};
}
Arrays.sort(players, new Comparator<int[]>() {
public int compare(int[] o1, int[] o2) {
if(o1[1]!=o2[1]) return o1[1]-o2[1];
else return o1[0]-o2[0];
}
});
int[] dp = new int[n];
dp[0] = players[0][0];
int maxScore = dp[0];
for(int i=1; i<n; i++){
dp[i] = players[i][0];
for(int j=0; j<i; j++){
if(players[j][1]<players[i][1] && players[j][0]>players[i][0]) continue;
dp[i] = Math.max(dp[i], dp[j]+players[i][0]);
maxScore = Math.max(maxScore, dp[i]);
}
}
return maxScore;
}
}
```