89918991 </span>
89928992 </a>
89938993
8994- </li>
8995-
8996- <li class="md-nav__item">
8997- <a href="#solution-3" class="md-nav__link">
8998- <span class="md-ellipsis">
8999- Solution 3
9000- </span>
9001- </a>
9002-
90038994</li>
90048995
90058996 </ul>
@@ -81796,21 +81787,21 @@ <h3 id="solution-1-dfs-backtracking">Solution 1: DFS (Backtracking)</h3>
8179681787<span class="normal">16</span>
8179781788<span class="normal">17</span>
8179881789<span class="normal">18</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>
81799- <span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">dfs</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">mut</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="n">res</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">mut</span><span class="w"> </span><span class="nb">Vec</span><span class="o"><</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="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kp">&</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>
81790+ <span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">dfs</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">t</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">mut</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="n">ans</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">mut</span><span class="w"> </span><span class="nb">Vec</span><span class="o"><</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="n">nums</span><span class="p">:</span><span class="w"> </span><span class="kp">&</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>
8180081791<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
81801- <span class="w"> </span><span class="n">res </span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">clone</span><span class="p">());</span>
81792+ <span class="w"> </span><span class="n">ans </span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">clone</span><span class="p">());</span>
8180281793<span class="w"> </span><span class="k">return</span><span class="p">;</span>
8180381794<span class="w"> </span><span class="p">}</span>
81804- <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</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="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">res </span><span class="p">,</span><span class="w"> </span><span class="n">nums</span><span class="p">);</span>
81795+ <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</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="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">ans </span><span class="p">,</span><span class="w"> </span><span class="n">nums</span><span class="p">);</span>
8180581796<span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
81806- <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</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="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">res </span><span class="p">,</span><span class="w"> </span><span class="n">nums</span><span class="p">);</span>
81797+ <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</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="n">t</span><span class="p">,</span><span class="w"> </span><span class="n">ans </span><span class="p">,</span><span class="w"> </span><span class="n">nums</span><span class="p">);</span>
8180781798<span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
8180881799<span class="w"> </span><span class="p">}</span>
8180981800
8181081801<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">subsets</span><span class="p">(</span><span class="n">nums</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="nb">Vec</span><span class="o"><</span><span class="nb">Vec</span><span class="o"><</span><span class="kt">i32</span><span class="o">>></span><span class="w"> </span><span class="p">{</span>
81811- <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">res </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
81812- <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="k">mut</span><span class="w"> </span><span class="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">(),</span><span class="w"> </span><span class="o">&</span><span class="k">mut</span><span class="w"> </span><span class="n">res </span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">nums</span><span class="p">);</span>
81813- <span class="w"> </span><span class="n">res </span>
81802+ <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="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
81803+ <span class="w"> </span><span class="bp">Self</span><span class="p">::</span><span class="n">dfs</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="k">mut</span><span class="w"> </span><span class="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">(),</span><span class="w"> </span><span class="o">&</span><span class="k">mut</span><span class="w"> </span><span class="n">ans </span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">nums</span><span class="p">);</span>
81804+ <span class="w"> </span><span class="n">ans </span>
8181481805<span class="w"> </span><span class="p">}</span>
8181581806<span class="p">}</span>
8181681807</code></pre></div></td></tr></table></div>
@@ -81825,7 +81816,7 @@ <h3 id="solution-2-binary-enumeration">Solution 2: Binary Enumeration</h3>
8182581816<p>We can also use the method of binary enumeration to get all subsets.</p>
8182681817<p>We can use $2^n$ binary numbers to represent all subsets of $n$ elements. For the current binary number $mask$, if the $i$th bit is $1$, it means that the $i$th element is selected, otherwise it means that the $i$th element is not selected.</p>
8182781818<p>The time complexity is $O(n \times 2^n)$, and the space complexity is $O(n)$. Here, $n$ is the length of the array. There are a total of $2^n$ subsets, and each subset takes $O(n)$ time to construct.</p>
81828- <div class="tabbed-set tabbed-alternate" data-tabs="2:5 "><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label><label for="__tabbed_2_2">Java</label><label for="__tabbed_2_3">C++</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">TypeScript</label></div>
81819+ <div class="tabbed-set tabbed-alternate" data-tabs="2:6 "><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" />< div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label><label for="__tabbed_2_2">Java</label><label for="__tabbed_2_3">C++</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">TypeScript</label><label for="__tabbed_2_6">Rust </label></div>
8182981820<div class="tabbed-content">
8183081821<div class="tabbed-block">
8183181822<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
@@ -81971,30 +81962,37 @@ <h3 id="solution-2-binary-enumeration">Solution 2: Binary Enumeration</h3>
8197181962<span class="p">}</span>
8197281963</code></pre></div></td></tr></table></div>
8197381964</div>
81974- </div>
81975- </div>
81976- <!-- solution:end -->
81977-
81978- <!-- solution:start -->
81979-
81980- <h3 id="solution-3">Solution 3</h3>
81981- <div class="tabbed-set tabbed-alternate" data-tabs="3:1"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">TypeScript</label></div>
81982- <div class="tabbed-content">
8198381965<div class="tabbed-block">
81984- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
81985- <span class="normal">2</span>
81986- <span class="normal">3</span>
81987- <span class="normal">4</span>
81988- <span class="normal">5</span>
81989- <span class="normal">6</span>
81990- <span class="normal">7</span>
81991- <span class="normal">8</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">subsets</span><span class="p">(</span><span class="nx">nums</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="p">[][]</span><span class="w"> </span><span class="p">{</span>
81992- <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">res</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="p">[[]];</span>
81993- <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81994- <span class="w"> </span><span class="nx">res</span><span class="p">.</span><span class="nx">push</span><span class="p">(...</span><span class="nx">res</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">arr</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="p">[...</span><span class="nx">arr</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="p">]));</span>
81966+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
81967+ <span class="normal"> 2</span>
81968+ <span class="normal"> 3</span>
81969+ <span class="normal"> 4</span>
81970+ <span class="normal"> 5</span>
81971+ <span class="normal"> 6</span>
81972+ <span class="normal"> 7</span>
81973+ <span class="normal"> 8</span>
81974+ <span class="normal"> 9</span>
81975+ <span class="normal">10</span>
81976+ <span class="normal">11</span>
81977+ <span class="normal">12</span>
81978+ <span class="normal">13</span>
81979+ <span class="normal">14</span>
81980+ <span class="normal">15</span>
81981+ <span class="normal">16</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>
81982+ <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">subsets</span><span class="p">(</span><span class="n">nums</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="nb">Vec</span><span class="o"><</span><span class="nb">Vec</span><span class="o"><</span><span class="kt">i32</span><span class="o">>></span><span class="w"> </span><span class="p">{</span>
81983+ <span class="w"> </span><span class="kd">let</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">nums</span><span class="p">.</span><span class="n">len</span><span class="p">();</span>
81984+ <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="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
81985+ <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">mask</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81986+ <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">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Vec</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
81987+ <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">0</span><span class="o">..</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
81988+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">mask</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="o">&</span><span class="w"> </span><span class="mi">1</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>
81989+ <span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
81990+ <span class="w"> </span><span class="p">}</span>
81991+ <span class="w"> </span><span class="p">}</span>
81992+ <span class="w"> </span><span class="n">ans</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">t</span><span class="p">);</span>
81993+ <span class="w"> </span><span class="p">}</span>
81994+ <span class="w"> </span><span class="n">ans</span>
8199581995<span class="w"> </span><span class="p">}</span>
81996-
81997- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">res</span><span class="p">;</span>
8199881996<span class="p">}</span>
8199981997</code></pre></div></td></tr></table></div>
8200081998</div>
@@ -82031,14 +82029,14 @@ <h3 id="solution-3">Solution 3</h3>
8203182029
8203282030 <nav>
8203382031
82034- <a href="https://github.com/rain84 " class="md-author" title="@rain84 ">
82032+ <a href="https://github.com/yanglbme " class="md-author" title="@yanglbme ">
8203582033
82036- <img src="https://avatars.githubusercontent.com/u/1732547 ?v=4&size=72" alt="rain84 ">
82034+ <img src="https://avatars.githubusercontent.com/u/21008209 ?v=4&size=72" alt="yanglbme ">
8203782035 </a>
8203882036
82039- <a href="https://github.com/yanglbme " class="md-author" title="@yanglbme ">
82037+ <a href="https://github.com/rain84 " class="md-author" title="@rain84 ">
8204082038
82041- <img src="https://avatars.githubusercontent.com/u/21008209 ?v=4&size=72" alt="yanglbme ">
82039+ <img src="https://avatars.githubusercontent.com/u/1732547 ?v=4&size=72" alt="rain84 ">
8204282040 </a>
8204382041
8204482042 <a href="https://github.com/YangFong" class="md-author" title="@YangFong">
0 commit comments