https://leetcode.com/problems/russian-doll-envelopes/

// Use map (Russian doll number -> vector of envelopes) to record results
// For each envelope, check above map, and when fitting envelope which can hold current one is found,
// no need to check more envelope as later envelope is with smaller size or smaller Russian doll number. bool lesser(const pair<int, int> &m1, const pair<int, int> &m2) {
// sort function
return m1.first < m2.first || (m1.first == m2.first && m1.second < m2.second);
} class Solution {
// Russian doll number -> vector of envelopes
map<int, vector<pair<int, int>>> mp;
map<int, vector<pair<int, int>>>::reverse_iterator itr;
vector<pair<int, int>>::iterator vitr;
// bool for whether best answer is reached
bool fit;
public:
int maxEnvelopes(vector<pair<int, int>>& envelopes) {
sort(envelopes.begin(), envelopes.end(), lesser);
int vlen = envelopes.size();
if (vlen == ) {
return ;
} // loop from big envelope to small envelope
for (int i=vlen-; i>=; i--) {
// with the order of Russian doll, check whether current envelope can fit previous one
for(itr = mp.rbegin(); itr != mp.rend(); ++itr) {
fit = false;
for (vitr = itr->second.begin(); vitr != itr->second.end(); ++vitr) {
if (envelopes[i].first < (*vitr).first &&
envelopes[i].second < (*vitr).second) { // find fitting envelope, add one to Russian doll answer and record
if (mp.find(itr->first + ) == mp.end()) {
vector<pair<int, int>> tmpvec;
tmpvec.push_back(envelopes[i]);
mp[itr->first + ] = tmpvec;
}
else {
mp[itr->first + ].push_back(envelopes[i]);
}
fit = true;
break;
}
}
if (fit) {
// if current envelope fit Russian doll, no need to check envelope with less answer
break;
}
}
if (itr == mp.rend()) {
// if no fitting envelope, current envelope is with Russian doll answer 1
if (mp.find() == mp.end()) {
vector<pair<int, int>> tmpvec;
tmpvec.push_back(envelopes[i]);
mp[] = tmpvec;
}
else {
mp[].push_back(envelopes[i]);
}
}
} // return the most Russian doll answer
return mp.rbegin()->first;
}
};

最新文章

  1. IOS开发的基础知识
  2. win7远程桌面连接windows2008服务器,连接启动很慢。我是这样解决的。
  3. MEF入门之不求甚解,但力求简单能讲明白(四)
  4. Php数据类型之整型详解
  5. Kafka实战系列--Kafka的安装/配置
  6. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 _get_select_list_options_selected(self, locator)
  7. php文件缓存
  8. canvas绘制自定义的曲线,以椭圆为例,通俗易懂,童叟无欺
  9. JS自动刷新页面一次
  10. [河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)
  11. switch实现一个两数的运算
  12. C#分布式事务解决方案-TransactionScope
  13. 12小时格式Xcode的-在一个“TimePicker”24 NSDate的设置
  14. python习题一
  15. icons 在线网站
  16. luogu P4774 [NOI2018]屠龙勇士
  17. 《java程序设计》结对编程-四则运算整体总结
  18. 今天2.4寸tft触摸屏到手--刷屏驱动小结
  19. 怎样优化app,看Facebook怎样做
  20. JFreeChart绘制XY折线图(工具类设计)

热门文章

  1. Mongoose关于当天日期的查询
  2. Ionic Js十五:对话框
  3. PHP 博客收集
  4. Swift2.0语言教程之类的属性
  5. [ 原创 ] Java基础7--Java反射机制主要提供了以下哪些功能?
  6. IIS Server Farms入门
  7. Null 和 Undefined
  8. MVC的Action上下文:ActionExecutingContext
  9. oracle开发学习篇之集合运算符以及集合异常捕获
  10. 了解 WMI (Windows Management Instrumentation) Windows管理工具