|
74755 | 74755 | <ul class="md-nav__list">
|
74756 | 74756 |
|
74757 | 74757 | <li class="md-nav__item">
|
74758 |
| - <a href="#solution-1" class="md-nav__link"> |
| 74758 | + <a href="#solution-1-bit-manipulation" class="md-nav__link"> |
74759 | 74759 | <span class="md-ellipsis">
|
74760 |
| - Solution 1 |
| 74760 | + Solution 1: Bit Manipulation |
74761 | 74761 | </span>
|
74762 | 74762 | </a>
|
74763 | 74763 |
|
@@ -77535,23 +77535,83 @@ <h2 id="description">Description</h2>
|
77535 | 77535 | <h2 id="solutions">Solutions</h2>
|
77536 | 77536 | <!-- solution:start -->
|
77537 | 77537 |
|
77538 |
| -<h3 id="solution-1">Solution 1</h3> |
77539 |
| -<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><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></div> |
| 77538 | +<h3 id="solution-1-bit-manipulation">Solution 1: Bit Manipulation</h3> |
| 77539 | +<p>If the bitwise AND result of $n$ and $k$ is not equal to $k$, it indicates that there exists at least one bit where $k$ is $1$ and the corresponding bit in $n$ is $0$. In this case, it is impossible to modify a bit in $n$ to make $n$ equal to $k$, and we return $-1$. Otherwise, we count the number of $1$s in the binary representation of $n \oplus k$.</p> |
| 77540 | +<p>The time complexity is $O(\log n)$, and the space complexity is $O(1)$.</p> |
| 77541 | +<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> |
77540 | 77542 | <div class="tabbed-content">
|
77541 | 77543 | <div class="tabbed-block">
|
77542 |
| -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code> |
| 77544 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
| 77545 | +<span class="normal">2</span> |
| 77546 | +<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span> |
| 77547 | + <span class="k">def</span> <span class="nf">minChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">k</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> |
| 77548 | + <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="k">if</span> <span class="n">n</span> <span class="o">&</span> <span class="n">k</span> <span class="o">!=</span> <span class="n">k</span> <span class="k">else</span> <span class="p">(</span><span class="n">n</span> <span class="o">^</span> <span class="n">k</span><span class="p">)</span><span class="o">.</span><span class="n">bit_count</span><span class="p">()</span> |
77543 | 77549 | </code></pre></div></td></tr></table></div>
|
77544 | 77550 | </div>
|
77545 | 77551 | <div class="tabbed-block">
|
77546 |
| -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code> |
| 77552 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
| 77553 | +<span class="normal">2</span> |
| 77554 | +<span class="normal">3</span> |
| 77555 | +<span class="normal">4</span> |
| 77556 | +<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span><span class="w"> </span><span class="p">{</span> |
| 77557 | +<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">minChanges</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 77558 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">Integer</span><span class="p">.</span><span class="na">bitCount</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="n">k</span><span class="p">);</span> |
| 77559 | +<span class="w"> </span><span class="p">}</span> |
| 77560 | +<span class="p">}</span> |
77547 | 77561 | </code></pre></div></td></tr></table></div>
|
77548 | 77562 | </div>
|
77549 | 77563 | <div class="tabbed-block">
|
77550 |
| -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code> |
| 77564 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
| 77565 | +<span class="normal">2</span> |
| 77566 | +<span class="normal">3</span> |
| 77567 | +<span class="normal">4</span> |
| 77568 | +<span class="normal">5</span> |
| 77569 | +<span class="normal">6</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> |
| 77570 | +<span class="k">public</span><span class="o">:</span> |
| 77571 | +<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">minChanges</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 77572 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">k</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="n">__builtin_popcount</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="n">k</span><span class="p">);</span> |
| 77573 | +<span class="w"> </span><span class="p">}</span> |
| 77574 | +<span class="p">};</span> |
77551 | 77575 | </code></pre></div></td></tr></table></div>
|
77552 | 77576 | </div>
|
77553 | 77577 | <div class="tabbed-block">
|
77554 |
| -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code> |
| 77578 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
| 77579 | +<span class="normal">2</span> |
| 77580 | +<span class="normal">3</span> |
| 77581 | +<span class="normal">4</span> |
| 77582 | +<span class="normal">5</span> |
| 77583 | +<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">func</span><span class="w"> </span><span class="nx">minChanges</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">k</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> |
| 77584 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">n</span><span class="o">&</span><span class="nx">k</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">k</span><span class="w"> </span><span class="p">{</span> |
| 77585 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span> |
| 77586 | +<span class="w"> </span><span class="p">}</span> |
| 77587 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">bits</span><span class="p">.</span><span class="nx">OnesCount</span><span class="p">(</span><span class="nb">uint</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="p">^</span><span class="w"> </span><span class="nx">k</span><span class="p">))</span> |
| 77588 | +<span class="p">}</span> |
| 77589 | +</code></pre></div></td></tr></table></div> |
| 77590 | +</div> |
| 77591 | +<div class="tabbed-block"> |
| 77592 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 77593 | +<span class="normal"> 2</span> |
| 77594 | +<span class="normal"> 3</span> |
| 77595 | +<span class="normal"> 4</span> |
| 77596 | +<span class="normal"> 5</span> |
| 77597 | +<span class="normal"> 6</span> |
| 77598 | +<span class="normal"> 7</span> |
| 77599 | +<span class="normal"> 8</span> |
| 77600 | +<span class="normal"> 9</span> |
| 77601 | +<span class="normal">10</span> |
| 77602 | +<span class="normal">11</span> |
| 77603 | +<span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">minChanges</span><span class="p">(</span><span class="nx">n</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">k</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> |
| 77604 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="nx">k</span><span class="p">)</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">k</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="o">-</span><span class="nx">1</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="kt">bitCount</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="nx">k</span><span class="p">);</span> |
| 77605 | +<span class="p">}</span> |
| 77606 | + |
| 77607 | +<span class="kd">function</span><span class="w"> </span><span class="nx">bitCount</span><span class="p">(</span><span class="nx">i</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> |
| 77608 | +<span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</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="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mh">0x55555555</span><span class="p">);</span> |
| 77609 | +<span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</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="mh">0x33333333</span><span class="p">)</span><span class="w"> </span><span class="o">+</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="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mh">0x33333333</span><span class="p">);</span> |
| 77610 | +<span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</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="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">>>></span><span class="w"> </span><span class="mf">4</span><span class="p">))</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mh">0x0f0f0f0f</span><span class="p">;</span> |
| 77611 | +<span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</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="mf">8</span><span class="p">);</span> |
| 77612 | +<span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</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="mf">16</span><span class="p">);</span> |
| 77613 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mh">0x3f</span><span class="p">;</span> |
| 77614 | +<span class="p">}</span> |
77555 | 77615 | </code></pre></div></td></tr></table></div>
|
77556 | 77616 | </div>
|
77557 | 77617 | </div>
|
|
0 commit comments