题解 | #设计LRU缓存结构#

设计LRU缓存结构

http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61

class Solution {
public:
    /**
     * lru design
     * @param operators int整型vector<vector<>> the ops
     * @param k int整型 the k
     * @return int整型vector
     */
    vector<int> LRU(vector<vector<int> >& operators, int k) {
        // write code here
        int num=0;
        map<int, int> m;
        list<int> l;
        vector<int> res;
        for(vector<vector<int>>::iterator it=operators.begin();it!=operators.end();it++)
        {
            if((*it).at(0)==1)
            {
                if(num<k)
                {
                    map<int,int>::iterator itt = m.find((*it).at(1));
                    if(itt!=m.end())
                    {
                        m.erase(itt);
                    }
                    m.insert(pair<int,int>((*it).at(1),(*it).at(2)));
                    l.push_back((*it).at(1));
                    num++;
                }
                else
                {
                    m.insert(pair<int,int>((*it).at(1),(*it).at(2)));
                    l.pop_front();
                    l.push_back((*it).at(1));
                }
            }
            if((*it).at(0)==2)
            {
                map<int,int>::iterator iter1;
                iter1 = m.find((*it).at(1));
                list<int>::iterator iter = l.end();
                for(list<int>::iterator vit=l.begin();vit!=l.end();vit++)
                {
                    if(*vit==(*it).at(1))
                    {
                        iter=vit;
                    }
                }
                if(iter!=l.end())
                {
                    res.push_back(iter1->second);
                    l.erase(iter);
                    
                    l.push_back((*it).at(1));
                }
                else
                {
                    res.push_back(-1);
                }
            }
        }
        return res;
    }
};
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务