@@ -80902,7 +80902,95 @@ <h3 id="solution-1">Solution 1</h3>
8090280902<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label></div>
8090380903<div class="tabbed-content">
8090480904<div class="tabbed-block">
80905- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>
80905+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
80906+ <span class="normal"> 2</span>
80907+ <span class="normal"> 3</span>
80908+ <span class="normal"> 4</span>
80909+ <span class="normal"> 5</span>
80910+ <span class="normal"> 6</span>
80911+ <span class="normal"> 7</span>
80912+ <span class="normal"> 8</span>
80913+ <span class="normal"> 9</span>
80914+ <span class="normal">10</span>
80915+ <span class="normal">11</span>
80916+ <span class="normal">12</span>
80917+ <span class="normal">13</span>
80918+ <span class="normal">14</span>
80919+ <span class="normal">15</span>
80920+ <span class="normal">16</span>
80921+ <span class="normal">17</span>
80922+ <span class="normal">18</span>
80923+ <span class="normal">19</span>
80924+ <span class="normal">20</span>
80925+ <span class="normal">21</span>
80926+ <span class="normal">22</span>
80927+ <span class="normal">23</span>
80928+ <span class="normal">24</span>
80929+ <span class="normal">25</span>
80930+ <span class="normal">26</span>
80931+ <span class="normal">27</span>
80932+ <span class="normal">28</span>
80933+ <span class="normal">29</span>
80934+ <span class="normal">30</span>
80935+ <span class="normal">31</span>
80936+ <span class="normal">32</span>
80937+ <span class="normal">33</span>
80938+ <span class="normal">34</span>
80939+ <span class="normal">35</span>
80940+ <span class="normal">36</span>
80941+ <span class="normal">37</span>
80942+ <span class="normal">38</span>
80943+ <span class="normal">39</span>
80944+ <span class="normal">40</span>
80945+ <span class="normal">41</span>
80946+ <span class="normal">42</span>
80947+ <span class="normal">43</span>
80948+ <span class="normal">44</span>
80949+ <span class="normal">45</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kn">from</span> <span class="nn">sortedcontainers</span> <span class="kn">import</span> <span class="n">SortedList</span>
80950+
80951+
80952+ <span class="k">class</span> <span class="nc">StatisticsTracker</span><span class="p">:</span>
80953+
80954+ <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
80955+ <span class="bp">self</span><span class="o">.</span><span class="n">q</span> <span class="o">=</span> <span class="n">deque</span><span class="p">()</span>
80956+ <span class="bp">self</span><span class="o">.</span><span class="n">s</span> <span class="o">=</span> <span class="mi">0</span>
80957+ <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
80958+ <span class="bp">self</span><span class="o">.</span><span class="n">sl</span> <span class="o">=</span> <span class="n">SortedList</span><span class="p">()</span>
80959+ <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span> <span class="o">=</span> <span class="n">SortedList</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="p">(</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
80960+
80961+ <span class="k">def</span> <span class="nf">addNumber</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
80962+ <span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
80963+ <span class="bp">self</span><span class="o">.</span><span class="n">sl</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
80964+ <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span><span class="o">.</span><span class="n">discard</span><span class="p">((</span><span class="n">number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]))</span>
80965+ <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
80966+ <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]))</span>
80967+ <span class="bp">self</span><span class="o">.</span><span class="n">s</span> <span class="o">+=</span> <span class="n">number</span>
80968+
80969+ <span class="k">def</span> <span class="nf">removeFirstAddedNumber</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
80970+ <span class="n">number</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span>
80971+ <span class="bp">self</span><span class="o">.</span><span class="n">sl</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
80972+ <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span><span class="o">.</span><span class="n">discard</span><span class="p">((</span><span class="n">number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]))</span>
80973+ <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">1</span>
80974+ <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cnt</span><span class="p">[</span><span class="n">number</span><span class="p">]))</span>
80975+ <span class="bp">self</span><span class="o">.</span><span class="n">s</span> <span class="o">-=</span> <span class="n">number</span>
80976+
80977+ <span class="k">def</span> <span class="nf">getMean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
80978+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">s</span> <span class="o">//</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="p">)</span>
80979+
80980+ <span class="k">def</span> <span class="nf">getMedian</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
80981+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sl</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">]</span>
80982+
80983+ <span class="k">def</span> <span class="nf">getMode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
80984+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sl2</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
80985+
80986+
80987+ <span class="c1"># Your StatisticsTracker object will be instantiated and called as such:</span>
80988+ <span class="c1"># obj = StatisticsTracker()</span>
80989+ <span class="c1"># obj.addNumber(number)</span>
80990+ <span class="c1"># obj.removeFirstAddedNumber()</span>
80991+ <span class="c1"># param_3 = obj.getMean()</span>
80992+ <span class="c1"># param_4 = obj.getMedian()</span>
80993+ <span class="c1"># param_5 = obj.getMode()</span>
8090680994</code></pre></div></td></tr></table></div>
8090780995</div>
8090880996<div class="tabbed-block">
0 commit comments