Java Easy Solution!!!
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass SnapshotArray {\n    List<Map<Integer, Integer>> list;\n    \n    public SnapshotArray(int length) {\n        list = new ArrayList();\n        list.add(new HashMap());\n    }\n    \n    public void set(int index, int val) {\n        int snapId = list.size() - 1;\n        list.get(snapId).put(index, val);\n    }\n    \n    public int snap() {\n        list.add(new HashMap());\n        return list.size() - 2;\n    }\n    \n    public int get(int index, int snap_id) {\n        for (int snap = snap_id; snap >= 0; snap--) {\n            if (list.get(snap).containsKey(index))\n                return list.get(snap).get(index);\n        }\n        return 0;\n    }\n}\n\n/**\n * Your SnapshotArray object will be instantiated and called as such:\n * SnapshotArray obj = new SnapshotArray(length);\n * obj.set(index,val);\n * int param_2 = obj.snap();\n * int param_3 = obj.get(index,snap_id);\n */\n```
['Java']