forked from fishercoder1534/Leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_1146.js
48 lines (43 loc) · 974 Bytes
/
_1146.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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)
*/