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;
};
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。