@@ -86198,7 +86198,7 @@ <h2 id="description">Description</h2>
86198
86198
productOfNumbers.getProduct(3); // return 40. The product of the last 3 numbers is 2 * 5 * 4 = 40
86199
86199
productOfNumbers.getProduct(4); // return 0. The product of the last 4 numbers is 0 * 2 * 5 * 4 = 0
86200
86200
productOfNumbers.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
86202
86202
</pre>
86203
86203
86204
86204
<p> </p>
@@ -86221,7 +86221,7 @@ <h3 id="solution-1-prefix-product">Solution 1: Prefix Product</h3>
86221
86221
<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>
86222
86222
<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>
86223
86223
<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>
86225
86225
<div class="tabbed-content">
86226
86226
<div class="tabbed-block">
86227
86227
<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>
86443
86443
<span class="cm"> */</span>
86444
86444
</code></pre></div></td></tr></table></div>
86445
86445
</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>
86446
86522
</div>
86447
86523
</div>
86448
86524
<!-- solution:end -->
@@ -86476,6 +86552,11 @@ <h3 id="solution-1-prefix-product">Solution 1: Prefix Product</h3>
86476
86552
86477
86553
<nav>
86478
86554
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
+
86479
86560
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
86480
86561
86481
86562
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments