52202
52202
<ul class="md-nav__list">
52203
52203
52204
52204
<li class="md-nav__item">
52205
- <a href="#solution-1" class="md-nav__link">
52205
+ <a href="#solution-1-hash-table " class="md-nav__link">
52206
52206
<span class="md-ellipsis">
52207
- Solution 1
52207
+ Solution 1: Hash Table
52208
52208
</span>
52209
52209
</a>
52210
52210
@@ -77328,7 +77328,10 @@ <h2 id="description">Description</h2>
77328
77328
<h2 id="solutions">Solutions</h2>
77329
77329
<!-- solution:start -->
77330
77330
77331
- <h3 id="solution-1">Solution 1</h3>
77331
+ <h3 id="solution-1-hash-table">Solution 1: Hash Table</h3>
77332
+ <p>We use a hash table $\textit{s}$ to record all the numbers in the array $\textit{nums}$.</p>
77333
+ <p>Next, starting from $\textit{original}$, if $\textit{original}$ is in $\textit{s}$, we multiply $\textit{original}$ by $2$ until $\textit{original}$ is not in $\textit{s}$ anymore, then return $\textit{original}$.</p>
77334
+ <p>The time complexity is $O(n)$, and the space complexity is $O(n)$. Here, $n$ is the length of the array $\textit{nums}$.</p>
77332
77335
<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>
77333
77336
<div class="tabbed-content">
77334
77337
<div class="tabbed-block">
@@ -77374,20 +77377,22 @@ <h3 id="solution-1">Solution 1</h3>
77374
77377
</code></pre></div></td></tr></table></div>
77375
77378
</div>
77376
77379
<div class="tabbed-block">
77377
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
77378
- <span class="normal">2</span>
77379
- <span class="normal">3</span>
77380
- <span class="normal">4</span>
77381
- <span class="normal">5</span>
77382
- <span class="normal">6</span>
77383
- <span class="normal">7</span>
77384
- <span class="normal">8</span>
77385
- <span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
77380
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
77381
+ <span class="normal"> 2</span>
77382
+ <span class="normal"> 3</span>
77383
+ <span class="normal"> 4</span>
77384
+ <span class="normal"> 5</span>
77385
+ <span class="normal"> 6</span>
77386
+ <span class="normal"> 7</span>
77387
+ <span class="normal"> 8</span>
77388
+ <span class="normal"> 9</span>
77389
+ <span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
77386
77390
<span class="k">public</span><span class="o">:</span>
77387
77391
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">findFinalValue</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>&</span><span class="w"> </span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">original</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
77388
- <span class="w"> </span><span class="n">unordered_set</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">s</span><span class="p">;</span>
77389
- <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">num</span><span class="p">);</span>
77390
- <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">count</span><span class="p">(</span><span class="n">original</span><span class="p">))</span><span class="w"> </span><span class="n">original</span><span class="w"> </span><span class="o"><<=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
77392
+ <span class="w"> </span><span class="n">unordered_set</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">s</span><span class="p">(</span><span class="n">nums</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
77393
+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">original</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
77394
+ <span class="w"> </span><span class="n">original</span><span class="w"> </span><span class="o"><<=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
77395
+ <span class="w"> </span><span class="p">}</span>
77391
77396
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">original</span><span class="p">;</span>
77392
77397
<span class="w"> </span><span class="p">}</span>
77393
77398
<span class="p">};</span>
@@ -77404,9 +77409,9 @@ <h3 id="solution-1">Solution 1</h3>
77404
77409
<span class="normal"> 8</span>
77405
77410
<span class="normal"> 9</span>
77406
77411
<span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">func</span><span class="w"> </span><span class="nx">findFinalValue</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">original</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
77407
- <span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nb">make</span><span class="p">(</span><span class=" kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">bool</span><span class="p">) </span>
77408
- <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">num </span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="k">range</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="p">{</span>
77409
- <span class="w"> </span><span class="nx">s</span><span class="p">[</span><span class="nx">num </span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
77412
+ <span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="kd">map</span><span class="p">[</span><span class="kt">int</span><span class="p">]</span><span class="kt">bool</span><span class="p">{} </span>
77413
+ <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">x </span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="k">range</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="p">{</span>
77414
+ <span class="w"> </span><span class="nx">s</span><span class="p">[</span><span class="nx">x </span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
77410
77415
<span class="w"> </span><span class="p">}</span>
77411
77416
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">s</span><span class="p">[</span><span class="nx">original</span><span class="p">]</span><span class="w"> </span><span class="p">{</span>
77412
77417
<span class="w"> </span><span class="nx">original</span><span class="w"> </span><span class="o"><<=</span><span class="w"> </span><span class="mi">1</span>
@@ -77423,9 +77428,9 @@ <h3 id="solution-1">Solution 1</h3>
77423
77428
<span class="normal">5</span>
77424
77429
<span class="normal">6</span>
77425
77430
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">findFinalValue</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="w"> </span><span class="nx">original</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>
77426
- <span class="w"> </span><span class="kd">let </span><span class="w"> </span><span class="nx">set </span><span class="o">:</span><span class="w"> </span><span class="kt">Set</span><span class="o"><</span><span class="kt">number</span><span class="o">></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">Set</span><span class="p">(</span><span class="nx">nums</span><span class="p">);</span>
77427
- <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">set </span><span class="p">.</span><span class="nx">has</span><span class="p">(</span><span class="nx">original</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
77428
- <span class="w"> </span><span class="nx">original</span><span class="w"> </span><span class="o">* =</span><span class="w"> </span><span class="mf">2 </span><span class="p">;</span>
77431
+ <span class="w"> </span><span class="kd">const </span><span class="w"> </span><span class="nx">s </span><span class="o">:</span><span class="w"> </span><span class="kt">Set</span><span class="o"><</span><span class="kt">number</span><span class="o">></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">Set</span><span class="p">([... </span><span class="nx">nums</span><span class="p">] );</span>
77432
+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">s </span><span class="p">.</span><span class="nx">has</span><span class="p">(</span><span class="nx">original</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
77433
+ <span class="w"> </span><span class="nx">original</span><span class="w"> </span><span class="o"><< =</span><span class="w"> </span><span class="mf">1 </span><span class="p">;</span>
77429
77434
<span class="w"> </span><span class="p">}</span>
77430
77435
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">original</span><span class="p">;</span>
77431
77436
<span class="p">}</span>
0 commit comments