Q64 Snapshot Array - LeetCode
Sat Feb 04 2023 09:37:40 GMT+0000 (Coordinated Universal Time)
Saved by
@Ayush_dabas07
class SnapshotArray {
int sid = 0;
//to store changes of values against every index
//it will be stored like snap_id -> last value changed
HashMap<Integer,Integer>[] map;
public SnapshotArray(int length) {
map = new HashMap[length];
for(int i =0 ;i < length ; i++)
map[i] = new HashMap<>();
}
public void set(int index, int val) {
map[index].put(sid,val);
}
public int snap() {
sid++;
return sid-1;
}
public int get(int index, int snap_id) {
//going to last changed value from the map[index]
while(snap_id >= 0 && map[index].containsKey(snap_id) == false)
snap_id--;
if(snap_id == -1) //if no value exists that number is never updated
return 0 ;
return map[index].get(snap_id);
}
}
/**
* Your SnapshotArray object will be instantiated and called as such:
* SnapshotArray obj = new SnapshotArray(length);
* obj.set(index,val);
* int param_2 = obj.snap();
* int param_3 = obj.get(index,snap_id);
*/
content_copyCOPY
https://leetcode.com/problems/snapshot-array/
Comments