讨论/题目交流/🏆 第 182 场力扣周赛/
🏆 第 182 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

3 分 - 找出数组中的幸运数
4 分 - 统计作战单位数
5 分 - 设计地铁系统
8 分 - 找到所有好字符串

展开讨论

第三题,用两个map,一个统计入站,另一个统计出入站的时间。

struct hasher1 {
    size_t operator()(const pair<string, string> &p)const {
        return hash<string>()(p.first+p.second);
    }
};
class UndergroundSystem {
    unordered_map<int, pair<string, int>> checkIns;//id,inStation,time
    unordered_map<pair<string, string>, pair<int, int>,hasher1> times;//from,to,totaltime,repeatedtimes
public:
    UndergroundSystem() {

    }

    void checkIn(int id, string stationName, int t) {
        checkIns.emplace(id, pair{ stationName,t });
    }

    void checkOut(int id, string stationName, int t) {
        auto&[inStation, time] = checkIns[id];
        auto && r = times.find(pair{ inStation,stationName });
        if (r != times.end()) {
            (*r).second.first += t - time;
            ++(*r).second.second;
        }
        else {
            times.emplace(pair{ inStation,stationName }, pair{ t - time,1 });
        }
        checkIns.erase(id);
    }

    double getAverageTime(string startStation, string endStation) {
        auto && r = times.find(pair{ startStation,endStation });
        if (r == times.end())return 0.0;
        return (double)(*r).second.first / (double)(*r).second.second;
    }
};
展开全部 31 讨论