Class RandomizedSet

java.lang.Object
g0301_0400.s0380_insert_delete_getrandom_o1.RandomizedSet

public class RandomizedSet extends Object
380 - Insert Delete GetRandom O(1).<p>Medium</p> <p>Implement the <code>RandomizedSet</code> class:</p> <ul> <li><code>RandomizedSet()</code> Initializes the <code>RandomizedSet</code> object.</li> <li><code>bool insert(int val)</code> Inserts an item <code>val</code> into the set if not present. Returns <code>true</code> if the item was not present, <code>false</code> otherwise.</li> <li><code>bool remove(int val)</code> Removes an item <code>val</code> from the set if present. Returns <code>true</code> if the item was present, <code>false</code> otherwise.</li> <li><code>int getRandom()</code> Returns a random element from the current set of elements (it&rsquo;s guaranteed that at least one element exists when this method is called). Each element must have the <strong>same probability</strong> of being returned.</li> </ul> <p>You must implement the functions of the class such that each function works in <strong>average</strong> <code>O(1)</code> time complexity.</p> <p><strong>Example 1:</strong></p> <p><strong>Input</strong></p> <pre><code> [&quot;RandomizedSet&quot;, &quot;insert&quot;, &quot;remove&quot;, &quot;insert&quot;, &quot;getRandom&quot;, &quot;remove&quot;, &quot;insert&quot;, &quot;getRandom&quot;] [ [], [1], [2], [2], [], [1], [2], []] </code></pre> <p><strong>Output:</strong> [null, true, false, true, 2, true, false, 2]</p> <p><strong>Explanation:</strong></p> <pre><code> RandomizedSet randomizedSet = new RandomizedSet(); randomizedSet.insert(1); // Inserts 1 to the set. Returns true as 1 was inserted successfully. randomizedSet.remove(2); // Returns false as 2 does not exist in the set. randomizedSet.insert(2); // Inserts 2 to the set, returns true. Set now contains [1,2]. randomizedSet.getRandom(); // getRandom() should return either 1 or 2 randomly. randomizedSet.remove(1); // Removes 1 from the set, returns true. Set now contains [2]. randomizedSet.insert(2); // 2 was already in the set, so return false. randomizedSet.getRandom(); // Since 2 is the only number in the set, getRandom() will always return 2. </code></pre> <p><strong>Constraints:</strong></p> <ul> <li><code>-2<sup>31</sup> <= val <= 2<sup>31</sup> - 1</code></li> <li>At most <code>2 *</code><code>10<sup>5</sup></code> calls will be made to <code>insert</code>, <code>remove</code>, and <code>getRandom</code>.</li> <li>There will be <strong>at least one</strong> element in the data structure when <code>getRandom</code> is called.</li> </ul>
  • Constructor Details

    • RandomizedSet

      public RandomizedSet()
  • Method Details

    • insert

      public boolean insert(int val)
    • remove

      public boolean remove(int val)
    • getRandom

      public int getRandom()