设计有setAll功能的哈希表

设计有setAll功能的哈希表

http://www.nowcoder.com/questionTerminal/7c4559f138e74ceb9ba57d76fd169967

由于C++的时间戳最多精确到毫秒,程序运行时间不足1毫秒,所以使用自定义的int计数。

#include <iostream>
#include <unordered_map>
#include <time.h>
using namespace std;

class MyMap
{
private:
    unordered_map<int, int> map;
    unordered_map<int, int> map_time;
    int setAllTime = 0;
    int allVal;
    int time = 0;

public:
    void put(int key, int val)
    {
        map[key] = val;
        map_time[key] = time++;
    }

    int get(int key)
    {
        if (!containsKey(key))
            return -1;
        return map_time[key] < setAllTime ? allVal : map[key];
    }

    bool containsKey(int key)
    {
        return map.find(key) != map.end() ? true : false;
    }

    void setAll(int val)
    {
        setAllTime = time++;
        allVal = val;
    }

};

int main()
{
    int num;
    cin >> num;

    MyMap map;
    for(int i = 0; i < num; i++)
    {
        int cmd;
        cin >> cmd;
        if (cmd == 1)    // put
        {
            int key, val;
            cin >> key >> val;
            map.put(key, val);
        }else if (cmd == 2)    // get
        {
            int key;
            cin >> key;
            cout << map.get(key) << endl;
        }else if (cmd == 3)    // setAll
        {
            int val;
            cin >> val;
            map.setAll(val);
        }
    }

    return 0;
}







全部评论

相关推荐

政委qqq:这道题在算法竞赛里唯一考的就是高精度,但是只能难住C++这类语言,Python直接a+b秒天秒地
点赞 评论 收藏
分享
03-26 12:00
已编辑
门头沟学院 Java
offer魅魔_oc...:100-200每天,你还要倒贴100
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务