美文网首页算法实习生
1146. Snapshot Array

1146. Snapshot Array

作者: STACK_ZHAO | 来源:发表于2019-08-05 21:30 被阅读0次

Question Discribtion

Implement a SnapshotArray that supports the following interface:

SnapshotArray(int length) initializes an array-like data structure with the given length. Initially, each element equals 0.
void set(index, val) sets the element at the given index to be equal to val.
int snap() takes a snapshot of the array and returns the snap_id: the total number of times we called snap() minus 1.
int get(index, snap_id) returns the value at the given index, at the time we took the snapshot with the given snap_id

#include<map>
#include<vector>
class SnapshotArray {
public:
    SnapshotArray(int length) {
        snapCnt = 0;
        map<int,int> t;
        t[0] = 0;
        
        for(int i = 0;i < length; ++i){
            arr.push_back(t);
        }
    }
    
    void set(int index, int val) {
        arr[index][snapCnt] = val;
    }
    
    int snap() {
        snapCnt++;
        return snapCnt-1;
    }
    
    int get(int index, int snap_id) {
       auto it = arr[index].upper_bound(snap_id);
       it--;
       return arr[index][it->first];
    }
private:
    vector<map<int,int>> arr;
    int snapCnt;
};

相关文章

网友评论

    本文标题:1146. Snapshot Array

    本文链接:https://www.haomeiwen.com/subject/xlbvdctx.html