From f08d839283ee633f09d7fa01bd8612f4e83c2db2 Mon Sep 17 00:00:00 2001 From: Divakar Date: Thu, 29 Dec 2022 19:13:59 +0530 Subject: [PATCH] added time-based key val leetcode problem in cpp --- 121 Leetcode/time_based_key_val.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 121 Leetcode/time_based_key_val.cpp diff --git a/121 Leetcode/time_based_key_val.cpp b/121 Leetcode/time_based_key_val.cpp new file mode 100644 index 00000000..9c58859d --- /dev/null +++ b/121 Leetcode/time_based_key_val.cpp @@ -0,0 +1,27 @@ +#include +using namespace std; + +class TimeMap { +public: + // initialising data structure as string=> {int,string} + unordered_map>> m; + TimeMap() { + } + void set(string key, string value, int timestamp) { + m[key].push_back({timestamp, value}); + } + string get(string key, int timestamp) { + if(!m.count(key)) + return ""; + // binary search + int start = 0, end = m[key].size(); + while(start < end) { + int mid = start + (end-start)/2; + if(m[key][mid].first > timestamp) + end = mid; + else + start = mid + 1; + } + return start > 0 and start <= m[key].size() ? m[key][start-1].second : ""; + } +}; \ No newline at end of file