@@ -81438,9 +81438,9 @@ <h2 id="solutions">Solutions</h2>
81438
81438
<!-- solution:start -->
81439
81439
81440
81440
<h3 id="solution-1-greedy-priority-queue">Solution 1: Greedy + Priority Queue</h3>
81441
- <p>We can greedily choose the apple that is most likely to rot among the unrotten apples, so that we can eat as many apples as possible.</p>
81442
- <p>Therefore, we can use a priority queue (min heap) to store the rotting time of the apples and the corresponding number of apples. Each time we take out the apple with the smallest rotting time from the priority queue, then reduce its quantity by one. If the quantity of the apple is not zero after reduction , we put it back into the priority queue. If the apple has rotted, we pop it out from the priority queue.</p>
81443
- <p>The time complexity is $O(n \times \log n)$, and the space complexity is $O(n)$. Here, $n$ is the length of the array <code>apples</code> or <code> days</code> .</p>
81441
+ <p>We can greedily choose the apples that are closest to rotting among the unrotten apples, so that we can eat as many apples as possible.</p>
81442
+ <p>Therefore, we can use a priority queue (min- heap) to store the rotting time of the apples and the corresponding number of apples. Each time, we take out the apples with the smallest rotting time from the priority queue, then decrement their quantity by one. If the quantity is not zero after decrementing , we put them back into the priority queue. If the apples have already rotted, we remove them from the priority queue.</p>
81443
+ <p>The time complexity is $O(n \times \log n + M )$, and the space complexity is $O(n)$. Here, $n$ is the length of the array $\textit{days}$, and $M = \max(\textit{ days})$ .</p>
81444
81444
<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>
81445
81445
<div class="tabbed-content">
81446
81446
<div class="tabbed-block">
@@ -81554,23 +81554,33 @@ <h3 id="solution-1-greedy-priority-queue">Solution 1: Greedy + Priority Queue</h
81554
81554
<span class="normal">20</span>
81555
81555
<span class="normal">21</span>
81556
81556
<span class="normal">22</span>
81557
- <span class="normal">23</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">using</span><span class="w"> </span><span class="n">pii</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">;</span>
81558
-
81559
- <span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
81557
+ <span class="normal">23</span>
81558
+ <span class="normal">24</span>
81559
+ <span class="normal">25</span>
81560
+ <span class="normal">26</span>
81561
+ <span class="normal">27</span>
81562
+ <span class="normal">28</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
81560
81563
<span class="k">public</span><span class="o">:</span>
81561
81564
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">eatenApples</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>&</span><span class="w"> </span><span class="n">apples</span><span class="p">,</span><span class="w"> </span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>&</span><span class="w"> </span><span class="n">days</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81565
+ <span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">pii</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">;</span>
81562
81566
<span class="w"> </span><span class="n">priority_queue</span><span class="o"><</span><span class="n">pii</span><span class="p">,</span><span class="w"> </span><span class="n">vector</span><span class="o"><</span><span class="n">pii</span><span class="o">></span><span class="p">,</span><span class="w"> </span><span class="n">greater</span><span class="o"><</span><span class="n">pii</span><span class="o">>></span><span class="w"> </span><span class="n">q</span><span class="p">;</span>
81563
81567
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">days</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
81564
81568
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
81565
81569
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
81566
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">apples</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">emplace</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">days</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">apples</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
81567
- <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">top</span><span class="p">().</span><span class="n">first</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
81570
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">apples</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
81571
+ <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">emplace</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">days</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">apples</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
81572
+ <span class="w"> </span><span class="p">}</span>
81573
+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">top</span><span class="p">().</span><span class="n">first</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81574
+ <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
81575
+ <span class="w"> </span><span class="p">}</span>
81568
81576
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
81569
81577
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="p">[</span><span class="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">top</span><span class="p">();</span>
81570
81578
<span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
81571
81579
<span class="w"> </span><span class="o">--</span><span class="n">v</span><span class="p">;</span>
81572
81580
<span class="w"> </span><span class="o">++</span><span class="n">ans</span><span class="p">;</span>
81573
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">v</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">emplace</span><span class="p">(</span><span class="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="p">);</span>
81581
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">v</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81582
+ <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">emplace</span><span class="p">(</span><span class="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="p">);</span>
81583
+ <span class="w"> </span><span class="p">}</span>
81574
81584
<span class="w"> </span><span class="p">}</span>
81575
81585
<span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">;</span>
81576
81586
<span class="w"> </span><span class="p">}</span>
0 commit comments