|
59130 | 59130 | </span>
|
59131 | 59131 | </a>
|
59132 | 59132 |
|
| 59133 | +</li> |
| 59134 | + |
| 59135 | + <li class="md-nav__item"> |
| 59136 | + <a href="#solution-2-dynamic-programming" class="md-nav__link"> |
| 59137 | + <span class="md-ellipsis"> |
| 59138 | + Solution 2: Dynamic programming |
| 59139 | + </span> |
| 59140 | + </a> |
| 59141 | + |
59133 | 59142 | </li>
|
59134 | 59143 |
|
59135 | 59144 | </ul>
|
@@ -81537,9 +81546,9 @@ <h2 id="description">Description</h2>
|
81537 | 81546 | <pre>
|
81538 | 81547 | <strong>Input:</strong> low = 3, high = 3, zero = 1, one = 1
|
81539 | 81548 | <strong>Output:</strong> 8
|
81540 |
| -<strong>Explanation:</strong> |
81541 |
| -One possible valid good string is "011". |
81542 |
| -It can be constructed as follows: "" -> "0" -> "01" -> "011". |
| 81549 | +<strong>Explanation:</strong> |
| 81550 | +One possible valid good string is "011". |
| 81551 | +It can be constructed as follows: "" -> "0" -> "01" -> "011". |
81543 | 81552 | All binary strings from "000" to "111" are good strings in this example.
|
81544 | 81553 | </pre>
|
81545 | 81554 |
|
@@ -81771,6 +81780,93 @@ <h3 id="solution-1-memoization-search">Solution 1: Memoization Search</h3>
|
81771 | 81780 | </div>
|
81772 | 81781 | <!-- solution:end -->
|
81773 | 81782 |
|
| 81783 | +<!-- solution:start --> |
| 81784 | + |
| 81785 | +<h3 id="solution-2-dynamic-programming">Solution 2: Dynamic programming</h3> |
| 81786 | +<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">TypeScript</label><label for="__tabbed_2_2">JavaScript</label></div> |
| 81787 | +<div class="tabbed-content"> |
| 81788 | +<div class="tabbed-block"> |
| 81789 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 81790 | +<span class="normal"> 2</span> |
| 81791 | +<span class="normal"> 3</span> |
| 81792 | +<span class="normal"> 4</span> |
| 81793 | +<span class="normal"> 5</span> |
| 81794 | +<span class="normal"> 6</span> |
| 81795 | +<span class="normal"> 7</span> |
| 81796 | +<span class="normal"> 8</span> |
| 81797 | +<span class="normal"> 9</span> |
| 81798 | +<span class="normal">10</span> |
| 81799 | +<span class="normal">11</span> |
| 81800 | +<span class="normal">12</span> |
| 81801 | +<span class="normal">13</span> |
| 81802 | +<span class="normal">14</span> |
| 81803 | +<span class="normal">15</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">countGoodStrings</span><span class="p">(</span><span class="nx">low</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">high</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">zero</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">one</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> |
| 81804 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">mod</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">9</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">7</span><span class="p">;</span> |
| 81805 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</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="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">high</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 81806 | +<span class="w"> </span><span class="nx">f</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="mf">1</span><span class="p">;</span> |
| 81807 | + |
| 81808 | +<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">1</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">high</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> |
| 81809 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="nx">zero</span><span class="p">)</span><span class="w"> </span><span class="nx">f</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">f</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">zero</span><span class="p">];</span> |
| 81810 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="nx">one</span><span class="p">)</span><span class="w"> </span><span class="nx">f</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">f</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">one</span><span class="p">];</span> |
| 81811 | +<span class="w"> </span><span class="nx">f</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">mod</span><span class="p">;</span> |
| 81812 | +<span class="w"> </span><span class="p">}</span> |
| 81813 | + |
| 81814 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">f</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">low</span><span class="p">,</span><span class="w"> </span><span class="nx">high</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">reduce</span><span class="p">((</span><span class="nx">acc</span><span class="p">,</span><span class="w"> </span><span class="nx">cur</span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">acc</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">cur</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span> |
| 81815 | + |
| 81816 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="nx">mod</span><span class="p">;</span> |
| 81817 | +<span class="p">}</span> |
| 81818 | +</code></pre></div></td></tr></table></div> |
| 81819 | +</div> |
| 81820 | +<div class="tabbed-block"> |
| 81821 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 81822 | +<span class="normal"> 2</span> |
| 81823 | +<span class="normal"> 3</span> |
| 81824 | +<span class="normal"> 4</span> |
| 81825 | +<span class="normal"> 5</span> |
| 81826 | +<span class="normal"> 6</span> |
| 81827 | +<span class="normal"> 7</span> |
| 81828 | +<span class="normal"> 8</span> |
| 81829 | +<span class="normal"> 9</span> |
| 81830 | +<span class="normal">10</span> |
| 81831 | +<span class="normal">11</span> |
| 81832 | +<span class="normal">12</span> |
| 81833 | +<span class="normal">13</span> |
| 81834 | +<span class="normal">14</span> |
| 81835 | +<span class="normal">15</span> |
| 81836 | +<span class="normal">16</span> |
| 81837 | +<span class="normal">17</span> |
| 81838 | +<span class="normal">18</span> |
| 81839 | +<span class="normal">19</span> |
| 81840 | +<span class="normal">20</span> |
| 81841 | +<span class="normal">21</span> |
| 81842 | +<span class="normal">22</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span> |
| 81843 | +<span class="cm"> * @param {number} low</span> |
| 81844 | +<span class="cm"> * @param {number} high</span> |
| 81845 | +<span class="cm"> * @param {number} zero</span> |
| 81846 | +<span class="cm"> * @param {number} one</span> |
| 81847 | +<span class="cm"> * @return {number}</span> |
| 81848 | +<span class="cm"> */</span> |
| 81849 | +<span class="kd">function</span><span class="w"> </span><span class="nx">countGoodStrings</span><span class="p">(</span><span class="nx">low</span><span class="p">,</span><span class="w"> </span><span class="nx">high</span><span class="p">,</span><span class="w"> </span><span class="nx">zero</span><span class="p">,</span><span class="w"> </span><span class="nx">one</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 81850 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">mod</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">9</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">7</span><span class="p">;</span> |
| 81851 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</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">high</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 81852 | +<span class="w"> </span><span class="nx">f</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="mf">1</span><span class="p">;</span> |
| 81853 | + |
| 81854 | +<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">1</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">high</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> |
| 81855 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="nx">zero</span><span class="p">)</span><span class="w"> </span><span class="nx">f</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">f</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">zero</span><span class="p">];</span> |
| 81856 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="nx">one</span><span class="p">)</span><span class="w"> </span><span class="nx">f</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">f</span><span class="p">[</span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">one</span><span class="p">];</span> |
| 81857 | +<span class="w"> </span><span class="nx">f</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">mod</span><span class="p">;</span> |
| 81858 | +<span class="w"> </span><span class="p">}</span> |
| 81859 | + |
| 81860 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">f</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">low</span><span class="p">,</span><span class="w"> </span><span class="nx">high</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">reduce</span><span class="p">((</span><span class="nx">acc</span><span class="p">,</span><span class="w"> </span><span class="nx">cur</span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">acc</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">cur</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span> |
| 81861 | + |
| 81862 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="nx">mod</span><span class="p">;</span> |
| 81863 | +<span class="p">}</span> |
| 81864 | +</code></pre></div></td></tr></table></div> |
| 81865 | +</div> |
| 81866 | +</div> |
| 81867 | +</div> |
| 81868 | +<!-- solution:end --> |
| 81869 | + |
81774 | 81870 | <!-- problem:end -->
|
81775 | 81871 |
|
81776 | 81872 |
|
@@ -81800,6 +81896,11 @@ <h3 id="solution-1-memoization-search">Solution 1: Memoization Search</h3>
|
81800 | 81896 |
|
81801 | 81897 | <nav>
|
81802 | 81898 |
|
| 81899 | + <a href="https://github.com/rain84" class="md-author" title="@rain84"> |
| 81900 | + |
| 81901 | + <img src="https://avatars.githubusercontent.com/u/1732547?v=4&size=72" alt="rain84"> |
| 81902 | + </a> |
| 81903 | + |
81803 | 81904 | <a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
|
81804 | 81905 |
|
81805 | 81906 | <img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
|
|
0 commit comments