拆分成两个子问题:对二维数组按照一定的方式排序 + LIS算法
步骤:
首先先对宽度进行升序排序,当遇到宽度相同的情况时,就按高度降序排序;之后把所有的高度作为一个数组,在这个数组上使用LIS
然后…然后就超时了,这测试用例貌似是更新了
但是大致的解法步骤和方向基本上是没有问题的
class Solution {
public int maxEnvelopes(int[][] envelopes) {
int n = envelopes.length;
Arrays.sort(envelopes,new Comparator(){
public int compare(int[] o1,int[] o2){
return o1[0]==o2[0]?o2[1]-o1[1]:o1[0]-o2[0];
}
});
int[] height = new int[n];
for(int i =0;inums[j]){
dp[i] = Math.max(dp[i],dp[j]+1);
}
}
}
int res = 0;
for(int i = 0;i 


