1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/使整数变为 0 的最少操作次数 [minimum-one-bit-operations-to-make-integers-zero].html
2022-03-29 12:43:11 +08:00

41 lines
1.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个整数 <code>n</code>,你需要重复执行多次下述操作将其转换为 <code>0</code> </p>
<ul>
<li>翻转 <code>n</code> 的二进制表示中最右侧位(第 <code>0</code> 位)。</li>
<li>如果第 <code>(i-1)</code> 位为 <code>1</code> 且从第 <code>(i-2)</code> 位到第 <code>0</code> 位都为 <code>0</code>,则翻转 <code>n</code> 的二进制表示中的第 <code>i</code> 位。</li>
</ul>
<p>返回将 <code>n</code> 转换为 <code>0</code> 的最小操作次数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>n = 3
<strong>输出:</strong>2
<strong>解释:</strong>3 的二进制表示为 "11"
"<strong>1</strong>1" -&gt; "<strong>0</strong>1" ,执行的是第 2 种操作,因为第 0 位为 1 。
"0<strong>1</strong>" -&gt; "0<strong>0</strong>" ,执行的是第 1 种操作。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>n = 6
<strong>输出:</strong>4
<strong>解释:</strong>6 的二进制表示为 "110".
"<strong>1</strong>10" -&gt; "<strong>0</strong>10" ,执行的是第 2 种操作,因为第 1 位为 1 ,第 0 到 0 位为 0 。
"01<strong>0</strong>" -&gt; "01<strong>1</strong>" ,执行的是第 1 种操作。
"0<strong>1</strong>1" -&gt; "0<strong>0</strong>1" ,执行的是第 2 种操作,因为第 0 位为 1 。
"00<strong>1</strong>" -&gt; "00<strong>0</strong>" ,执行的是第 1 种操作。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= n &lt;= 10<sup>9</sup></code></li>
</ul>