java.lang.Object
g0401_0500.s0432_all_oone_data_structure.AllOne

public class AllOne extends Object
432 - All O`one Data Structure.<p>Hard</p> <p>Design a data structure to store the strings&rsquo; count with the ability to return the strings with minimum and maximum counts.</p> <p>Implement the <code>AllOne</code> class:</p> <ul> <li><code>AllOne()</code> Initializes the object of the data structure.</li> <li><code>inc(String key)</code> Increments the count of the string <code>key</code> by <code>1</code>. If <code>key</code> does not exist in the data structure, insert it with count <code>1</code>.</li> <li><code>dec(String key)</code> Decrements the count of the string <code>key</code> by <code>1</code>. If the count of <code>key</code> is <code>0</code> after the decrement, remove it from the data structure. It is guaranteed that <code>key</code> exists in the data structure before the decrement.</li> <li><code>getMaxKey()</code> Returns one of the keys with the maximal count. If no element exists, return an empty string <code>&quot;&quot;</code>.</li> <li><code>getMinKey()</code> Returns one of the keys with the minimum count. If no element exists, return an empty string <code>&quot;&quot;</code>.</li> </ul> <p><strong>Example 1:</strong></p> <p><strong>Input</strong></p> <pre><code> [&quot;AllOne&quot;, &quot;inc&quot;, &quot;inc&quot;, &quot;getMaxKey&quot;, &quot;getMinKey&quot;, &quot;inc&quot;, &quot;getMaxKey&quot;, &quot;getMinKey&quot;] [ [], [&quot;hello&quot;], [&quot;hello&quot;], [], [], [&quot;leet&quot;], [], []] </code></pre> <p><strong>Output:</strong> [null, null, null, &ldquo;hello&rdquo;, &ldquo;hello&rdquo;, null, &ldquo;hello&rdquo;, &ldquo;leet&rdquo;]</p> <p><strong>Explanation:</strong></p> <pre><code> AllOne allOne = new AllOne(); allOne.inc(&quot;hello&quot;); allOne.inc(&quot;hello&quot;); allOne.getMaxKey(); // return &quot;hello&quot; allOne.getMinKey(); // return &quot;hello&quot; allOne.inc(&quot;leet&quot;); allOne.getMaxKey(); // return &quot;hello&quot; allOne.getMinKey(); // return &quot;leet&quot; </code></pre> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= key.length <= 10</code></li> <li><code>key</code> consists of lowercase English letters.</li> <li>It is guaranteed that for each call to <code>dec</code>, <code>key</code> is existing in the data structure.</li> <li>At most <code>5 * 10<sup>4</sup></code> calls will be made to <code>inc</code>, <code>dec</code>, <code>getMaxKey</code>, and <code>getMinKey</code>.</li> </ul>
  • Constructor Details

    • AllOne

      public AllOne()
  • Method Details

    • inc

      public void inc(String key)
    • dec

      public void dec(String key)
    • getMaxKey

      public String getMaxKey()
    • getMinKey

      public String getMinKey()