|
47651 | 47651 | <ul class="md-nav__list">
|
47652 | 47652 |
|
47653 | 47653 | <li class="md-nav__item">
|
47654 |
| - <a href="#solution-1" class="md-nav__link"> |
| 47654 | + <a href="#solution-1-sorting-greedy" class="md-nav__link"> |
47655 | 47655 | <span class="md-ellipsis">
|
47656 |
| - Solution 1 |
| 47656 | + Solution 1: Sorting + Greedy |
47657 | 47657 | </span>
|
47658 | 47658 | </a>
|
47659 | 47659 |
|
@@ -81266,7 +81266,13 @@ <h2 id="description">Description</h2>
|
81266 | 81266 | <h2 id="solutions">Solutions</h2>
|
81267 | 81267 | <!-- solution:start -->
|
81268 | 81268 |
|
81269 |
| -<h3 id="solution-1">Solution 1</h3> |
| 81269 | +<h3 id="solution-1-sorting-greedy">Solution 1: Sorting + Greedy</h3> |
| 81270 | +<p>We use the $\textit{times}$ array to record the latest time each monster can be eliminated. For the $i$-th monster, the latest time it can be eliminated is:</p> |
| 81271 | +<p>$$\textit{times}[i] = \left\lfloor \frac{\textit{dist}[i]-1}{\textit{speed}[i]} \right\rfloor$$</p> |
| 81272 | +<p>Next, we sort the $\textit{times}$ array in ascending order.</p> |
| 81273 | +<p>Then, we traverse the $\textit{times}$ array. For the $i$-th monster, if $\textit{times}[i] \geq i$, it means the $i$-th monster can be eliminated. Otherwise, it means the $i$-th monster cannot be eliminated, and we return $i$ immediately.</p> |
| 81274 | +<p>If all monsters can be eliminated, we return $n$.</p> |
| 81275 | +<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.</p> |
81270 | 81276 | <div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><input id="__tabbed_1_7" 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><label for="__tabbed_1_7">C#</label></div>
|
81271 | 81277 | <div class="tabbed-content">
|
81272 | 81278 | <div class="tabbed-block">
|
@@ -81401,7 +81407,7 @@ <h3 id="solution-1">Solution 1</h3>
|
81401 | 81407 | <span class="normal">13</span>
|
81402 | 81408 | <span class="normal">14</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">eliminateMaximum</span><span class="p">(</span><span class="nx">dist</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[],</span><span class="w"> </span><span class="nx">speed</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>
|
81403 | 81409 | <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dist</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
|
81404 |
| -<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">times</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 81410 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">times</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
81405 | 81411 | <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</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">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
81406 | 81412 | <span class="w"> </span><span class="nx">times</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="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">((</span><span class="nx">dist</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="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">speed</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
|
81407 | 81413 | <span class="w"> </span><span class="p">}</span>
|
@@ -81433,23 +81439,25 @@ <h3 id="solution-1">Solution 1</h3>
|
81433 | 81439 | <span class="normal">15</span>
|
81434 | 81440 | <span class="normal">16</span>
|
81435 | 81441 | <span class="normal">17</span>
|
81436 |
| -<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span> |
| 81442 | +<span class="normal">18</span> |
| 81443 | +<span class="normal">19</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span> |
81437 | 81444 | <span class="cm"> * @param {number[]} dist</span>
|
81438 | 81445 | <span class="cm"> * @param {number[]} speed</span>
|
81439 | 81446 | <span class="cm"> * @return {number}</span>
|
81440 | 81447 | <span class="cm"> */</span>
|
81441 | 81448 | <span class="kd">var</span><span class="w"> </span><span class="nx">eliminateMaximum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">dist</span><span class="p">,</span><span class="w"> </span><span class="nx">speed</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
81442 |
| -<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span> |
81443 |
| -<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</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">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">dist</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
81444 |
| -<span class="w"> </span><span class="nx">arr</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="nx">dist</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="nx">speed</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> |
| 81449 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dist</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> |
| 81450 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">times</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 81451 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</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">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 81452 | +<span class="w"> </span><span class="nx">times</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="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">((</span><span class="nx">dist</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="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">speed</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span> |
81445 | 81453 | <span class="w"> </span><span class="p">}</span>
|
81446 |
| -<span class="w"> </span><span class="nx">arr</span><span class="p">.</span><span class="nx">sort</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">b</span><span class="p">);</span> |
81447 |
| -<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
81448 |
| -<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="nx">ans</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
81449 |
| -<span class="w"> </span><span class="nx">arr</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span> |
81450 |
| -<span class="w"> </span><span class="o">++</span><span class="nx">ans</span><span class="p">;</span> |
| 81454 | +<span class="w"> </span><span class="nx">times</span><span class="p">.</span><span class="nx">sort</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">b</span><span class="p">);</span> |
| 81455 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</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">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 81456 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">times</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="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 81457 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span> |
| 81458 | +<span class="w"> </span><span class="p">}</span> |
81451 | 81459 | <span class="w"> </span><span class="p">}</span>
|
81452 |
| -<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span> |
| 81460 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span> |
81453 | 81461 | <span class="p">};</span>
|
81454 | 81462 | </code></pre></div></td></tr></table></div>
|
81455 | 81463 | </div>
|
|
0 commit comments