알고리즘/leetcode

Map Sum Pairs

유이얼 2021. 7. 31. 15:43

https://leetcode.com/explore/challenge/card/july-leetcoding-challenge-2021/612/week-5-july-29th-july-31st/3832/

class MapSum {
public:
    /** Initialize your data structure here. */
    MapSum() {
        m_.clear();
    }
    
    void insert(string key, int val) {
        m_[key] = val;
    }
    
    int sum(string prefix) {
        int ans = 0;
        int size = prefix.size();
        for (auto p : m_) {
            if (p.first.size() < size) continue;
            
            int i = 0;
            for (; i < size; ++i)
                if (p.first[i] != prefix[i]) break;
            
            if (i == size)
                ans += p.second;
        }
        
        return ans;
    }
private:
    map<string, int> m_;
};

 

    /** Initialize your data structure here. */
    MapSum() {
        score.clear();
        m.clear();
    }
    
    void insert(string key, int val) {
        int delta = m[key];
        m[key] = val;
        
        string k = "";
        for (int i = 0; i < key.size(); ++i) {
            k += key[i];
            score[k] += val - delta;
        }
    }
    
    int sum(string prefix) {
        return score[prefix];
    }
private:
    map<string, int> score;
    map<string, int> m;
};