|
62723 | 62723 | <ul class="md-nav__list"> |
62724 | 62724 |
|
62725 | 62725 | <li class="md-nav__item"> |
62726 | | - <a href="#solution-1" class="md-nav__link"> |
| 62726 | + <a href="#solution-1-two-pointers" class="md-nav__link"> |
62727 | 62727 | <span class="md-ellipsis"> |
62728 | | - Solution 1 |
62729 | | - </span> |
62730 | | - </a> |
62731 | | - |
62732 | | -</li> |
62733 | | - |
62734 | | - <li class="md-nav__item"> |
62735 | | - <a href="#solution-2" class="md-nav__link"> |
62736 | | - <span class="md-ellipsis"> |
62737 | | - Solution 2 |
| 62728 | + Solution 1: Two Pointers |
62738 | 62729 | </span> |
62739 | 62730 | </a> |
62740 | 62731 |
|
@@ -86807,7 +86798,9 @@ <h2 id="description">Description</h2> |
86807 | 86798 | <h2 id="solutions">Solutions</h2> |
86808 | 86799 | <!-- solution:start --> |
86809 | 86800 |
|
86810 | | -<h3 id="solution-1">Solution 1</h3> |
| 86801 | +<h3 id="solution-1-two-pointers">Solution 1: Two Pointers</h3> |
| 86802 | +<p>We use a pointer <span class="arithmatex">\(i\)</span> to traverse the array <span class="arithmatex">\(forts\)</span>, and a pointer <span class="arithmatex">\(j\)</span> to start traversing from the next position of <span class="arithmatex">\(i\)</span> until it encounters the first non-zero position, i.e., <span class="arithmatex">\(forts[j] \neq 0\)</span>. If <span class="arithmatex">\(forts[i] + forts[j] = 0\)</span>, then we can move the army between <span class="arithmatex">\(i\)</span> and <span class="arithmatex">\(j\)</span>, destroying <span class="arithmatex">\(j - i - 1\)</span> enemy forts. We use the variable <span class="arithmatex">\(ans\)</span> to record the maximum number of enemy forts that can be destroyed.</p> |
| 86803 | +<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, and the space complexity is <span class="arithmatex">\(O(1)\)</span>. Where <span class="arithmatex">\(n\)</span> is the length of the array <code>forts</code>.</p> |
86811 | 86804 | <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">Rust</label></div> |
86812 | 86805 | <div class="tabbed-content"> |
86813 | 86806 | <div class="tabbed-block"> |
@@ -87040,61 +87033,6 @@ <h3 id="solution-1">Solution 1</h3> |
87040 | 87033 | </div> |
87041 | 87034 | <!-- solution:end --> |
87042 | 87035 |
|
87043 | | -<!-- solution:start --> |
87044 | | - |
87045 | | -<h3 id="solution-2">Solution 2</h3> |
87046 | | -<div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Rust</label></div> |
87047 | | -<div class="tabbed-content"> |
87048 | | -<div class="tabbed-block"> |
87049 | | -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
87050 | | -<span class="normal"> 2</span> |
87051 | | -<span class="normal"> 3</span> |
87052 | | -<span class="normal"> 4</span> |
87053 | | -<span class="normal"> 5</span> |
87054 | | -<span class="normal"> 6</span> |
87055 | | -<span class="normal"> 7</span> |
87056 | | -<span class="normal"> 8</span> |
87057 | | -<span class="normal"> 9</span> |
87058 | | -<span class="normal">10</span> |
87059 | | -<span class="normal">11</span> |
87060 | | -<span class="normal">12</span> |
87061 | | -<span class="normal">13</span> |
87062 | | -<span class="normal">14</span> |
87063 | | -<span class="normal">15</span> |
87064 | | -<span class="normal">16</span> |
87065 | | -<span class="normal">17</span> |
87066 | | -<span class="normal">18</span> |
87067 | | -<span class="normal">19</span> |
87068 | | -<span class="normal">20</span> |
87069 | | -<span class="normal">21</span> |
87070 | | -<span class="normal">22</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">Solution</span><span class="w"> </span><span class="p">{</span> |
87071 | | -<span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">capture_forts</span><span class="p">(</span><span class="n">forts</span><span class="p">:</span><span class="w"> </span><span class="nb">Vec</span><span class="o"><</span><span class="kt">i32</span><span class="o">></span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span> |
87072 | | -<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</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> |
87073 | | -<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</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> |
87074 | | - |
87075 | | -<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">((</span><span class="n">idx</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">value</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">forts</span><span class="p">.</span><span class="n">iter</span><span class="p">().</span><span class="n">enumerate</span><span class="p">().</span><span class="n">skip</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">find</span><span class="p">(</span><span class="o">|&</span><span class="p">(</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">x</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">x</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="p">{</span> |
87076 | | -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">((</span><span class="n">jdx</span><span class="p">,</span><span class="w"> </span><span class="n">_</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">forts</span> |
87077 | | -<span class="w"> </span><span class="p">.</span><span class="n">iter</span><span class="p">()</span> |
87078 | | -<span class="w"> </span><span class="p">.</span><span class="n">enumerate</span><span class="p">()</span> |
87079 | | -<span class="w"> </span><span class="p">.</span><span class="n">skip</span><span class="p">(</span><span class="n">idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span> |
87080 | | -<span class="w"> </span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="o">|&</span><span class="p">(</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">x</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span> |
87081 | | -<span class="w"> </span><span class="p">{</span> |
87082 | | -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">forts</span><span class="p">[</span><span class="n">jdx</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span> |
87083 | | -<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ans</span><span class="p">.</span><span class="n">max</span><span class="p">(</span><span class="n">jdx</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> |
87084 | | -<span class="w"> </span><span class="p">}</span> |
87085 | | -<span class="w"> </span><span class="p">}</span> |
87086 | | -<span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> |
87087 | | -<span class="w"> </span><span class="p">}</span> |
87088 | | - |
87089 | | -<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">i32</span> |
87090 | | -<span class="w"> </span><span class="p">}</span> |
87091 | | -<span class="p">}</span> |
87092 | | -</code></pre></div></td></tr></table></div> |
87093 | | -</div> |
87094 | | -</div> |
87095 | | -</div> |
87096 | | -<!-- solution:end --> |
87097 | | - |
87098 | 87036 | <!-- problem:end --> |
87099 | 87037 |
|
87100 | 87038 |
|
|
0 commit comments