354. 俄罗斯套娃信封问题
- 按宽度 → 升序
- 高度相等时,则 降序
return a[0] !== b[0] ? a[0] - b[0] : b[1] - a[1];
- 下面的写法超时了,得用另外一种写法(二分法)
var maxEnvelopes = function (envelopes) {
envelopes.sort((a, b) => {
return a[0] !== b[0] ? a[0] - b[0] : b[1] - a[1];
});
let height = [];
for (let item of envelopes) {
height.push(item[1]);
}
return lengthOfLIS(height);
function lengthOfLIS(nums) {
let n = nums.length;
// dp[i]:以 num[i] 结尾的最长递增子序列为
let dp = new Array(n).fill(1);
for (let i = 0; i < n; i++) {
for (let j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[j] + 1, dp[i]);
}
}
}
return Math.max(...dp);
}
};