
class Solution {
public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
if (envelopes.empty()) {
return 0;
}
sort(envelopes.begin(), envelopes.end(), [](auto e1, auto e2)
{
return e1[0] < e2[0] || (e1[0] == e2[0] && e1[1] > e2[1]);
});
int n = envelopes.size();
vector<int> f(n, 1);
for (int i = 1; i < n; ++i)
{
for (int j = 0; j < i; ++j)
{
if (envelopes[j][1] < envelopes[i][1])
{
f[i] = max(f[i], f[j] + 1);
}
}
}
return *max_element(f.begin(), f.end());
}
};
本文介绍了一种解决信封嵌套问题的高效算法。通过自定义排序规则和动态规划方法,该算法能够找到信封嵌套的最大数量。代码中详细展示了如何实现这一算法,并通过具体示例解释了其工作原理。
671





