From 748b3677c61a2767e2b13338de347fc65197ecfb Mon Sep 17 00:00:00 2001 From: Phuong Lam Date: Fri, 6 Nov 2020 17:16:03 -0500 Subject: [PATCH 1/2] Add solution for problem 1146 in Javascript --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5b9f8ce549..cea44b2925 100644 --- a/README.md +++ b/README.md @@ -1061,6 +1061,7 @@ _If you like this project, please leave me a star._ ★ |1179|[Reformat Department Table](https://leetcode.com/problems/reformat-department-table/)|[Solution](../master/database/_1179.sql) | | Easy | |1173|[Immediate Food Delivery I](https://leetcode.com/problems/immediate-food-delivery-i/)|[Solution](../master/database/_1173.sql) | | Easy | |1148|[Article Views I](https://leetcode.com/problems/article-views-i/)|[Solution](../master/database/_1148.sql) | | Easy | +|1146|[Snapshot Array](https://leetcode.com/problems/snapshot-array/)|[Javascript](./javascript/_1146.js)| | Easy | |1141|[User Activity for the Past 30 Days I](https://leetcode.com/problems/user-activity-for-the-past-30-days-i/)|[Solution](../master/database/_1141.sql) | | Easy | |1084|[Sales Analysis III](https://leetcode.com/problems/sales-analysis-iii/)|[Solution](../master/database/_1084.sql) | | Easy | |1083|[Sales Analysis II](https://leetcode.com/problems/sales-analysis-ii/)|[Solution](../master/database/_1083.sql) | | Easy | From 315254249325b52ee93c6cf338fadd1bb040f968 Mon Sep 17 00:00:00 2001 From: Phuong Lam Date: Fri, 6 Nov 2020 17:16:47 -0500 Subject: [PATCH 2/2] Add js file --- javascript/_1146.js | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 javascript/_1146.js diff --git a/javascript/_1146.js b/javascript/_1146.js new file mode 100644 index 0000000000..d4c9dad7c3 --- /dev/null +++ b/javascript/_1146.js @@ -0,0 +1,48 @@ +/** + * Author: Phuong Lam + */ + +/** + * @param {number} length + */ +var SnapshotArray = function (length) { + this.changes = {} + this.snapShots = [] +} + +/** + * @param {number} index + * @param {number} val + * @return {void} + */ +SnapshotArray.prototype.set = function (index, val) { + this.changes[index] = val +} + +/** + * @return {number} + */ +SnapshotArray.prototype.snap = function () { + this.snapShots.push(this.changes) + this.changes = {} + return this.snapShots.length - 1 +} + +/** + * @param {number} index + * @param {number} snap_id + * @return {number} + */ +SnapshotArray.prototype.get = function (index, snap_id) { + while (snap_id >= 0 && this.snapShots[snap_id][index] === undefined) snap_id-- + if (snap_id >= 0) return this.snapShots[snap_id][index] + return 0 +} + +/** + * Your SnapshotArray object will be instantiated and called as such: + * var obj = new SnapshotArray(length) + * obj.set(index,val) + * var param_2 = obj.snap() + * var param_3 = obj.get(index,snap_id) + */