|
27908 | 27908 | <ul class="md-nav__list">
|
27909 | 27909 |
|
27910 | 27910 | <li class="md-nav__item">
|
27911 |
| - <a href="#solution-1" class="md-nav__link"> |
| 27911 | + <a href="#solution-1-dynamic-programming" class="md-nav__link"> |
27912 | 27912 | <span class="md-ellipsis">
|
27913 |
| - Solution 1 |
| 27913 | + Solution 1: Dynamic Programming |
27914 | 27914 | </span>
|
27915 | 27915 | </a>
|
27916 | 27916 |
|
@@ -81957,8 +81957,12 @@ <h2 id="description">Description</h2>
|
81957 | 81957 | <h2 id="solutions">Solutions</h2>
|
81958 | 81958 | <!-- solution:start -->
|
81959 | 81959 |
|
81960 |
| -<h3 id="solution-1">Solution 1</h3> |
81961 |
| -<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><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" /><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></div> |
| 81960 | +<h3 id="solution-1-dynamic-programming">Solution 1: Dynamic Programming</h3> |
| 81961 | +<p>We define $f[i]$ as the length of the longest turbulent subarray ending at $\textit{nums}[i]$ with an increasing state, and $g[i]$ as the length of the longest turbulent subarray ending at $\textit{nums}[i]$ with a decreasing state. Initially, $f[0] = 1$, $g[0] = 1$. The answer is $\max(f[i], g[i])$.</p> |
| 81962 | +<p>For $i \gt 0$, if $\textit{nums}[i] \gt \textit{nums}[i - 1]$, then $f[i] = g[i - 1] + 1$, otherwise $f[i] = 1$; if $\textit{nums}[i] \lt \textit{nums}[i - 1]$, then $g[i] = f[i - 1] + 1$, otherwise $g[i] = 1$.</p> |
| 81963 | +<p>Since $f[i]$ and $g[i]$ are only related to $f[i - 1]$ and $g[i - 1]$, two variables can be used instead of arrays.</p> |
| 81964 | +<p>The time complexity is $O(n)$, where $n$ is the length of the array. The space complexity is $O(1)$.</p> |
| 81965 | +<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> |
81962 | 81966 | <div class="tabbed-content">
|
81963 | 81967 | <div class="tabbed-block">
|
81964 | 81968 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
|
@@ -82098,6 +82102,42 @@ <h3 id="solution-1">Solution 1</h3>
|
82098 | 82102 | <span class="p">}</span>
|
82099 | 82103 | </code></pre></div></td></tr></table></div>
|
82100 | 82104 | </div>
|
| 82105 | +<div class="tabbed-block"> |
| 82106 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 82107 | +<span class="normal"> 2</span> |
| 82108 | +<span class="normal"> 3</span> |
| 82109 | +<span class="normal"> 4</span> |
| 82110 | +<span class="normal"> 5</span> |
| 82111 | +<span class="normal"> 6</span> |
| 82112 | +<span class="normal"> 7</span> |
| 82113 | +<span class="normal"> 8</span> |
| 82114 | +<span class="normal"> 9</span> |
| 82115 | +<span class="normal">10</span> |
| 82116 | +<span class="normal">11</span> |
| 82117 | +<span class="normal">12</span> |
| 82118 | +<span class="normal">13</span> |
| 82119 | +<span class="normal">14</span> |
| 82120 | +<span class="normal">15</span> |
| 82121 | +<span class="normal">16</span> |
| 82122 | +<span class="normal">17</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> |
| 82123 | +<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">max_turbulence_size</span><span class="p">(</span><span class="n">arr</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> |
| 82124 | +<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">1</span><span class="p">;</span> |
| 82125 | +<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">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> |
| 82126 | +<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">g</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> |
| 82127 | + |
| 82128 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="n">arr</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| 82129 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">ff</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">arr</span><span class="p">[</span><span class="n">i</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="o"><</span><span class="w"> </span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><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><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">};</span> |
| 82130 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">gg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">arr</span><span class="p">[</span><span class="n">i</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="o">></span><span class="w"> </span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><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><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">};</span> |
| 82131 | +<span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ff</span><span class="p">;</span> |
| 82132 | +<span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gg</span><span class="p">;</span> |
| 82133 | +<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">f</span><span class="p">.</span><span class="n">max</span><span class="p">(</span><span class="n">g</span><span class="p">));</span> |
| 82134 | +<span class="w"> </span><span class="p">}</span> |
| 82135 | + |
| 82136 | +<span class="w"> </span><span class="n">ans</span> |
| 82137 | +<span class="w"> </span><span class="p">}</span> |
| 82138 | +<span class="p">}</span> |
| 82139 | +</code></pre></div></td></tr></table></div> |
| 82140 | +</div> |
82101 | 82141 | </div>
|
82102 | 82142 | </div>
|
82103 | 82143 | <!-- solution:end -->
|
|
0 commit comments