@@ -86198,7 +86198,7 @@ <h2 id="description">Description</h2>
8619886198productOfNumbers.getProduct(3); // return 40. The product of the last 3 numbers is 2 * 5 * 4 = 40
8619986199productOfNumbers.getProduct(4); // return 0. The product of the last 4 numbers is 0 * 2 * 5 * 4 = 0
8620086200productOfNumbers.add(8); // [3,0,2,5,4,8]
86201- productOfNumbers.getProduct(2); // return 32. The product of the last 2 numbers is 4 * 8 = 32
86201+ productOfNumbers.getProduct(2); // return 32. The product of the last 2 numbers is 4 * 8 = 32
8620286202</pre>
8620386203
8620486204<p> </p>
@@ -86221,7 +86221,7 @@ <h3 id="solution-1-prefix-product">Solution 1: Prefix Product</h3>
8622186221<p>When calling <code>add(num)</code>, we judge whether <code>num</code> is <span class="arithmatex">\(0\)</span>. If it is, we set <span class="arithmatex">\(s\)</span> to <code>[1]</code>. Otherwise, we multiply the last element of <span class="arithmatex">\(s\)</span> by <code>num</code> and add the result to the end of <span class="arithmatex">\(s\)</span>.</p>
8622286222<p>When calling <code>getProduct(k)</code>, we now judge whether the length of <span class="arithmatex">\(s\)</span> is less than or equal to <span class="arithmatex">\(k\)</span>. If it is, we return <span class="arithmatex">\(0\)</span>. Otherwise, we return the last element of <span class="arithmatex">\(s\)</span> divided by the <span class="arithmatex">\(k + 1\)</span>th element from the end of <span class="arithmatex">\(s\)</span>. That is, <span class="arithmatex">\(s[-1] / s[-k - 1]\)</span>.</p>
8622386223<p>The time complexity is <span class="arithmatex">\(O(1)\)</span>, and the space complexity is <span class="arithmatex">\(O(n)\)</span>. Where <span class="arithmatex">\(n\)</span> is the number of times <code>add</code> is called.</p>
86224- <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>
86224+ <div class="tabbed-set tabbed-alternate" data-tabs="1:6 "><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" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" 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><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">JavaScript </label></div>
8622586225<div class="tabbed-content">
8622686226<div class="tabbed-block">
8622786227<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -86443,6 +86443,82 @@ <h3 id="solution-1-prefix-product">Solution 1: Prefix Product</h3>
8644386443<span class="cm"> */</span>
8644486444</code></pre></div></td></tr></table></div>
8644586445</div>
86446+ <div class="tabbed-block">
86447+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86448+ <span class="normal"> 2</span>
86449+ <span class="normal"> 3</span>
86450+ <span class="normal"> 4</span>
86451+ <span class="normal"> 5</span>
86452+ <span class="normal"> 6</span>
86453+ <span class="normal"> 7</span>
86454+ <span class="normal"> 8</span>
86455+ <span class="normal"> 9</span>
86456+ <span class="normal">10</span>
86457+ <span class="normal">11</span>
86458+ <span class="normal">12</span>
86459+ <span class="normal">13</span>
86460+ <span class="normal">14</span>
86461+ <span class="normal">15</span>
86462+ <span class="normal">16</span>
86463+ <span class="normal">17</span>
86464+ <span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nx">ProductOfNumbers</span><span class="w"> </span><span class="p">{</span>
86465+ <span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
86466+
86467+ <span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
86468+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">num</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86469+ <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
86470+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
86471+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
86472+ <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
86473+ <span class="w"> </span><span class="p">}</span>
86474+ <span class="w"> </span><span class="p">}</span>
86475+
86476+ <span class="w"> </span><span class="nx">getProduct</span><span class="p">(</span><span class="nx">k</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
86477+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
86478+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">k</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
86479+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">k</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
86480+ <span class="w"> </span><span class="p">}</span>
86481+ <span class="p">}</span>
86482+ </code></pre></div></td></tr></table></div>
86483+ </div>
86484+ <div class="tabbed-block">
86485+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86486+ <span class="normal"> 2</span>
86487+ <span class="normal"> 3</span>
86488+ <span class="normal"> 4</span>
86489+ <span class="normal"> 5</span>
86490+ <span class="normal"> 6</span>
86491+ <span class="normal"> 7</span>
86492+ <span class="normal"> 8</span>
86493+ <span class="normal"> 9</span>
86494+ <span class="normal">10</span>
86495+ <span class="normal">11</span>
86496+ <span class="normal">12</span>
86497+ <span class="normal">13</span>
86498+ <span class="normal">14</span>
86499+ <span class="normal">15</span>
86500+ <span class="normal">16</span>
86501+ <span class="normal">17</span>
86502+ <span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nx">ProductOfNumbers</span><span class="w"> </span><span class="p">{</span>
86503+ <span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
86504+
86505+ <span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86506+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">num</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86507+ <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
86508+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
86509+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
86510+ <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
86511+ <span class="w"> </span><span class="p">}</span>
86512+ <span class="w"> </span><span class="p">}</span>
86513+
86514+ <span class="w"> </span><span class="nx">getProduct</span><span class="p">(</span><span class="nx">k</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86515+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
86516+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">k</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
86517+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">k</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
86518+ <span class="w"> </span><span class="p">}</span>
86519+ <span class="p">}</span>
86520+ </code></pre></div></td></tr></table></div>
86521+ </div>
8644686522</div>
8644786523</div>
8644886524<!-- solution:end -->
@@ -86476,6 +86552,11 @@ <h3 id="solution-1-prefix-product">Solution 1: Prefix Product</h3>
8647686552
8647786553 <nav>
8647886554
86555+ <a href="https://github.com/rain84" class="md-author" title="@rain84">
86556+
86557+ <img src="https://avatars.githubusercontent.com/u/1732547?v=4&size=72" alt="rain84">
86558+ </a>
86559+
8647986560 <a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
8648086561
8648186562 <img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments