文章目录

  • 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阿明),一起加油、一起学习进步!

LeetCode 6033. 转换数字的最少位翻转次数(位运算)相关推荐

  1. LeetCode 2220. 转换数字的最少位翻转次数(位运算)

    文章目录 1. 题目 2. 解题 1. 题目 一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 . 比方说,x = 7 ,二进制表示为 11 ...

  2. 2220. 转换数字的最少位翻转次数

    一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作,即将 0 变成 1 ,或者将 1 变成 0 . 比方说,x = 7 ,二进制表示为 111 ,我们可以选择任意一个位(包含没有显示的前 ...

  3. leetCode-995:K 连续位的最小翻转次数

    题目描述: 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K 位翻转的最小 ...

  4. LeetCode 995. K 连续位的最小翻转次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 ...

  5. Leetcode 第1342题:将数字变成 0 的操作次数 (位运算解题法详解)

    前言 Leetcode第1342题如果用直观方式来做,其实是一道难度极低的题目.但是如果采用位运算的方式来解,则会涉及许多有趣的衍生知识点,了解其背后的原理对我们认识位运算有很大的帮助.现在,就让我们 ...

  6. LeetCode 1318. 或运算的最小翻转次数(位运算)

    1. 题目 给你三个正整数 a.b 和 c. 你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数. 「位翻转操作」是指将一个数的二进制表 ...

  7. # 将微博地址里面的62进制字符串转换成10进制的16位数字mid

    # 将微博地址里面的62进制字符串转换成10进制的16位数字middef base62_decode(string):alphabet = "0123456789abcdefghijklmn ...

  8. leetcode 995. K 连续位的最小翻转次数(贪心算法)

    在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K 位翻转的最小次数,以便数 ...

  9. 2027. 转换字符串的最少操作次数

    2027. 转换字符串的最少操作次数 给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' . 一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 'O ...

最新文章

  1. OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)
  2. 这么写注释,老板会不会开除我?
  3. mysql用户_MySQL用户权限管理详解
  4. postfix邮件系统之邮件客户端无法收邮件问题解析
  5. java中利用正则表达式获取a标签
  6. zookeeper源码_阿里P8带你从源码级别——深挖Zookeeper监听机制
  7. python:ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from
  8. ThinkPHP截取部分文章文字、字符串
  9. Qt配置OpenCV教程,亲测已试过(详细版)
  10. 数据治理:数据血缘关系分析
  11. 在html上运行asp,ASP在网页设计的作用
  12. Java毕设项目博雅楼自习室预约系统计算机(附源码+系统+数据库+LW)
  13. Foxmail的创建
  14. 计算多边形中心点坐标的方法
  15. 前端——列表、表格、表单
  16. java杨戬的角色_非人哉:游戏角色反映了神仙们的爱好,杨戬太让人意外了
  17. Unity API - A
  18. 国家邮政局出马,菜鸟顺丰大战落幕
  19. 机械设计基础知识点总结
  20. YouCompleteMe(YCM)安装时遇到的问题(能遇到的几乎都遇到了)

热门文章

  1. 计算机与广播电视论文,浅谈广播电视中计算机技术的作用论文.pdf
  2. ftp改为sftp_浅谈 FTP、FTPS 与 SFTP
  3. 高光谱图像pca降维_高光谱图像的数据特性之探讨
  4. php5.3+for+linux,Centos 安装 nginx + php5.3
  5. cocos2dx 圆盘抽奖_cocoscreator之微信小游戏的抽奖转盘
  6. ARM中各始终之间的关系,FCLK HCLK PCLK的关系
  7. 实验二《Java面向对象程序设计》实验报告
  8. modelsim 的高效使用
  9. Spring中DispacherServlet、WebApplicationContext、ServletContext的关系
  10. 蓝桥杯 之 基础练习10:十进制转十六进制