russian-doll-envelopes
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 == 0) { return 0; } // loop from big envelope to small envelope for (int i=vlen-1; i>=0; 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 + 1) == mp.end()) { vector<pair<int, int>> tmpvec; tmpvec.push_back(envelopes[i]); mp[itr->first + 1] = tmpvec; } else { mp[itr->first + 1].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(1) == mp.end()) { vector<pair<int, int>> tmpvec; tmpvec.push_back(envelopes[i]); mp[1] = tmpvec; } else { mp[1].push_back(envelopes[i]); } } } // return the most Russian doll answer return mp.rbegin()->first; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!