给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。
当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。
请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。
作为leetCode老菜来说,依然是老套路,上来啪的一下就是一套暴力运算,很快啊,就超时了。
用递归来遍历的话,算法没问题,但是数据一多肯定超时。
看了官方解答,用排序二维降级成一维数组,然后就变成最大子串的老套路了。
用w来升序,然后相同的w用h做降序排序
然后把排序好的h列拿出来,再进行最大子串的运算。
envelopes.sort(function (a,b){
if(a[0] === b[0]){
return b[1]-a[1];
}else {
return a[0]-b[0];
}
})
秒!反正我是想不出来