aboutsummaryrefslogtreecommitdiff
path: root/other/time_base_key_val.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/time_base_key_val.cpp')
-rw-r--r--other/time_base_key_val.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/other/time_base_key_val.cpp b/other/time_base_key_val.cpp
new file mode 100644
index 0000000..c23fb87
--- /dev/null
+++ b/other/time_base_key_val.cpp
@@ -0,0 +1,32 @@
+#include "leetcode.h"
+
+class TimeMap {
+public:
+ unordered_map<string, vector<pair<int, string>>> umvp;
+ TimeMap() {}
+ void set(string key, string value, int timestamp) {
+ umvp[key].push_back({timestamp, value});
+ }
+ string get(string key, int timestamp) {
+ if (!umvp.count(key))
+ return "";
+ int start = 0, end = umvp[key].size();
+ while (start < end) {
+ int mid = start + (end - start) / 2;
+ if (umvp[key][mid].first > timestamp)
+ end = mid;
+ else
+ start = mid + 1;
+ }
+ return start > 0 && start <= umvp[key].size() ? umvp[key][start - 1].second
+ : "";
+ }
+};
+
+int main() {
+ string key, value;
+ int timestamp;
+ TimeMap *obj = new TimeMap();
+ obj->set(key, value, timestamp);
+ string param_2 = obj->get(key, timestamp);
+}