@@ -81438,9 +81438,9 @@ <h2 id="solutions">Solutions</h2>
8143881438<!-- solution:start -->
8143981439
8144081440<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>
8144481444<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>
8144581445<div class="tabbed-content">
8144681446<div class="tabbed-block">
@@ -81554,23 +81554,33 @@ <h3 id="solution-1-greedy-priority-queue">Solution 1: Greedy + Priority Queue</h
8155481554<span class="normal">20</span>
8155581555<span class="normal">21</span>
8155681556<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>
8156081563<span class="k">public</span><span class="o">:</span>
8156181564<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>
8156281566<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>
8156381567<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>
8156481568<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>
8156581569<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>
8156881576<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>
8156981577<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>
8157081578<span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
8157181579<span class="w"> </span><span class="o">--</span><span class="n">v</span><span class="p">;</span>
8157281580<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>
8157481584<span class="w"> </span><span class="p">}</span>
8157581585<span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">;</span>
8157681586<span class="w"> </span><span class="p">}</span>
0 commit comments