珠海网站建设外包,项目管理师证书报考条件,网站建设文章官网,南平网站建设公司文章目录1. 题目2. 解题1. 题目
一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作#xff0c;即将 0 变成 1 #xff0c;或者将 1 变成 0 。
比方说#xff0c;x 7 #xff0c;二进制表示为 111 #xff0c;我们可以选择任意一个位#xff08;包含没有显示…
文章目录1. 题目2. 解题1. 题目
一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作即将 0 变成 1 或者将 1 变成 0 。
比方说x 7 二进制表示为 111 我们可以选择任意一个位包含没有显示的前导 0 并进行翻转。 比方说我们可以翻转最右边一位得到 110 或者翻转右边起第二位得到 101 或者翻转右边起第五位这一位是前导 0 得到 10111 等等。
给你两个整数 start 和 goal 请你返回将 start 转变成 goal 的 最少位翻转 次数。
示例 1
输入start 10, goal 7
输出3
解释10 和 7 的二进制表示分别为 1010 和 0111 。我们可以通过 3 步将 10 转变成 7
- 翻转右边起第一位得到1010 - 1011 。
- 翻转右边起第三位1011 - 1111 。
- 翻转右边起第四位1111 - 0111 。
我们无法在 3 步内将 10 转变成 7 。所以我们返回 3 。示例 2
输入start 3, goal 4
输出3
解释3 和 4 的二进制表示分别为 011 和 100 。我们可以通过 3 步将 3 转变成 4
- 翻转右边起第一位011 - 010 。
- 翻转右边起第二位010 - 000 。
- 翻转右边起第三位000 - 100 。
我们无法在 3 步内将 3 变成 4 。所以我们返回 3 。提示
0 start, goal 10^9来源力扣LeetCode 链接https://leetcode-cn.com/problems/minimum-bit-flips-to-convert-number 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
两个数不一样的位就是需要反转的使用异或再求取异或值的二进制位1的个数
class Solution {
public:int minBitFlips(int start, int goal) {int num start^goal;int ct 0;while(num){ct;num num(num-1); // 减少最后一个bit 1}return ct;}
};0 ms 5.8 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步