这个题目其实没啥好说的。
题目O(1)应该是指最优情况下
unordered_map 可以实现最优情况下O(1)查找。
双向链表可以实现O(1)删除。
就是利用hashmap找到节点删除然后再添加到双向链表的尾部,这里手撸了一下双向链表,😂

class Solution {
public:
    /**
     * lru design
     * @param operators int整型vector<vector<>> the ops
     * @param k int整型 the k
     * @return int整型vector
     */
    struct NodeList
    {
        int key;
        int value;
        NodeList* tail;
        NodeList* next;
    };

    NodeList* head = new NodeList();
    NodeList* hend = head;
    unordered_map<int, NodeList*> KV;
    void insertp (NodeList*& hend, NodeList*& p) {
        hend->next = p;
        p->tail = hend;
        hend = p;
        hend->next = NULL;
    }
    void deletep(NodeList*& p) {
        if (p != hend) {
            p->tail->next = p->next;
            p->next->tail = p->tail;
        }
        else
        {
            hend = p->tail;
            hend->next = p->next;
        } 
    }
    int get(int key) {
        if (KV.count(key)==1) {
            auto p = KV.find(key)->second;
            deletep(p);
            insertp(hend, p);
            return p->value;
        }
        else {
            return -1;
        }
    }
    void set(int key, int value, int& k) {
        int oldValue = get(key);
        if (oldValue == -1) {
            if (!k) {
                NodeList* q = head->next;
                KV.erase(q ->key);
                deletep(q);
                free(q);
                k++;
            }
            NodeList* p = new NodeList();
            p->key = key;
            p->value=value;
            insertp(hend, p);
            KV[key] = p;
            k--;
        }
       else{
           auto p=KV[key];
           p->value=value;
           KV[key]=p;
        }
    }
    vector<int> LRU(vector<vector<int> >& operators, int k) {
        vector<int> res;
        for (auto x : operators) {
            if (x[0] == 1) {
                set(x[1], x[2], k);
            }
            else
            {
                res.push_back(get(x[1]));
            }
        }
        return res;
    }
};
static const auto io_sync_off=[]()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    return nullptr;
}();

ps:牛客的时间确实不太准一会65ms,一会95ms