File tree Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Original file line number Diff line number Diff line change @@ -104,3 +104,69 @@ TimeLimitedCache.prototype.count = function () {
104
104
* timeLimitedCache.get(1) // 42
105
105
* timeLimitedCache.count() // 1
106
106
*/
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ # Code:
118
+ `` `
119
+ var TimeLimitedCache = function () {
120
+ this.data = {};
121
+ this.active = 0;
122
+ };
123
+
124
+ /**
125
+ * @param {number} key
126
+ * @param {number} value
127
+ * @param {number} duration time until expiration in ms
128
+ * @return {boolean} if un-expired key already existed
129
+ */
130
+ TimeLimitedCache.prototype.set = function (key, value, duration) {
131
+ const prevActive = !!this.data[key]?.isActive;
132
+ prevActive ? clearTimeout(this.data[key].timeoutId) : this.active++;
133
+
134
+ const timeoutId = setTimeout(() => {
135
+ this.active--;
136
+ this.data[key].isActive = false;
137
+ }, duration);
138
+
139
+ this.data[key] = {
140
+ isActive: true,
141
+ value,
142
+ timeoutId
143
+ }
144
+
145
+ return prevActive;
146
+ };
147
+
148
+ /**
149
+ * @param {number} key
150
+ * @return {number} value associated with key
151
+ */
152
+ TimeLimitedCache.prototype.get = function (key) {
153
+ return this.data[key]?.isActive ? this.data[key].value : -1;
154
+ };
155
+
156
+ /**
157
+ * @return {number} count of non-expired keys
158
+ */
159
+ TimeLimitedCache.prototype.count = function () {
160
+ return this.active;
161
+ };
162
+
163
+ /**
164
+ * const timeLimitedCache = new TimeLimitedCache()
165
+ * timeLimitedCache.set(1, 42, 1000); // false
166
+ * timeLimitedCache.get(1) // 42
167
+ * timeLimitedCache.count() // 1
168
+ */
169
+ ` ``
170
+
171
+
172
+ ! [ upvote . jpeg ] ( https :/ / assets . leetcode . com / users / images / 5 f4cbe15 - 6 cad - 4 d49 - 80 d4 - 00608 bb91a4a_1720427891 .529782 . jpeg )
You can’t perform that action at this time.
0 commit comments