欢迎投稿

今日深度:

LintCode-502: Mini Cassandra (System Design题),

LintCode-502: Mini Cassandra (System Design题),


这题注意query返回的vector必须是按column_key排好序的,所以最好用map< int, string >来存,因为C++里面的map自动按key来排序。用vector的话比较麻烦,因为Column类不能修改。

/**
 * Definition of Column:
 * class Column {
 * public:
 *     int key;
 *     String value;
 *     Column(int key, string value) {
 *         this->key = key;
 *         this->value = value;
 *    }
 * }
 */


class MiniCassandra {
public:
    MiniCassandra() {
        // do intialization if necessary
    }

    /*
     * @param raw_key: a string
     * @param column_key: An integer
     * @param column_value: a string
     * @return: nothing
     */
    void insert(string &raw_key, int column_key, string &column_value) {
        hashmap[raw_key][column_key] = column_value;
    }

    /*
     * @param raw_key: a string
     * @param column_start: An integer
     * @param column_end: An integer
     * @return: a list of Columns
     */
    vector<Column> query(string &raw_key, int column_start, int column_end) {
        vector<Column> sol;

        if (hashmap.find(raw_key) == hashmap.end()) return sol;

        for (auto c : hashmap[raw_key]) {
            if ((c.first >= column_start) && (c.first <= column_end)) {
                sol.push_back(Column(c.first, c.second));
            }      
        }

        return sol;
    }

private:
    map<string, map<int, string>> hashmap;
};

www.htsjk.Com true http://www.htsjk.com/cassandra/34314.html NewsArticle LintCode-502: Mini Cassandra (System Design题), 这题注意query返回的vector必须是按column_key排好序的,所以最好用map int, string 来存,因为C++里面的map自动按key来排序。用vector的话比较麻烦,因为...
相关文章
    暂无相关文章
评论暂时关闭