Q64 Snapshot Array - LeetCode

PHOTO EMBED

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/