俄罗斯套娃问题;
描述
中文English
给一定数量的信封,带有整数对
(w, h)
分别代表信封宽度和高度。一个信封的宽高均大于另一个信封时可以放下另一个信封。
求最大的信封嵌套层数。
解法一:
二分查找 + pair对的第二位采取求最长子序列方法
通过率100%。
注意:代码中有6处容易错的地方,已经标注出来!
class Solution {
public:
/*
* @param envelopes: a number of envelopes with widths and heights
* @return: the maximum number of envelopes
*/
static bool comp(const pair<int,int>& a, const pair<int,int>& b){
if(a.first!=b.first) return a.first<b.first; //容易错1:按升序
return a.second>b.second; //容易错2:注意这里按降序
}
int maxEnvelopes(vector<pair<int, int>>& envelopes) {
sort(envelopes.begin(),envelopes.end(), comp);
int size = envelopes.siz