Class SnapshotArray

java.lang.Object
g1101_1200.s1146_snapshot_array.SnapshotArray

public class SnapshotArray extends Object
1146 - Snapshot Array.<p>Medium</p> <p>Implement a SnapshotArray that supports the following interface:</p> <ul> <li><code>SnapshotArray(int length)</code> initializes an array-like data structure with the given length. <strong>Initially, each element equals 0</strong>.</li> <li><code>void set(index, val)</code> sets the element at the given <code>index</code> to be equal to <code>val</code>.</li> <li><code>int snap()</code> takes a snapshot of the array and returns the <code>snap_id</code>: the total number of times we called <code>snap()</code> minus <code>1</code>.</li> <li><code>int get(index, snap_id)</code> returns the value at the given <code>index</code>, at the time we took the snapshot with the given <code>snap_id</code></li> </ul> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> [&ldquo;SnapshotArray&rdquo;,&ldquo;set&rdquo;,&ldquo;snap&rdquo;,&ldquo;set&rdquo;,&ldquo;get&rdquo;] [[3],[0,5],[],[0,6],[0,0]]</p> <p><strong>Output:</strong> [null,null,0,null,5]</p> <p><strong>Explanation:</strong></p> <p>SnapshotArray snapshotArr = new SnapshotArray(3); // set the length to be 3 snapshotArr.set(0,5); // Set array[0] = 5 snapshotArr.snap(); // Take a snapshot, return snap_id = 0 snapshotArr.set(0,6); snapshotArr.get(0,0); // Get the value of array[0] with snap_id = 0, return 5</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= length <= 50000</code></li> <li>At most <code>50000</code> calls will be made to <code>set</code>, <code>snap</code>, and <code>get</code>.</li> <li><code>0 <= index < length</code></li> <li><code>0 <= snap_id <</code>(the total number of times we call <code>snap()</code>)</li> <li><code>0 <= val <= 10^9</code></li> </ul>
  • Constructor Details

    • SnapshotArray

      public SnapshotArray(int length)
  • Method Details

    • set

      public void set(int index, int val)
    • snap

      public int snap()
    • get

      public int get(int index, int snapId)