专栏首页Michael阿明学习之路LeetCode 1318. 或运算的最小翻转次数(位运算)

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

1. 题目

给你三个正整数 a、b 和 c。

你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数。

「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。

示例 1:

输入:a = 2, b = 6, c = 5
输出:3
解释:翻转后 a = 1 , b = 4 , c = 5 使得 a OR b == c

示例 2:
输入:a = 4, b = 2, c = 7
输出:1

示例 3:
输入:a = 1, b = 2, c = 3
输出:0
 
提示:
1 <= a <= 10^9
1 <= b <= 10^9
1 <= c <= 10^9

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-flips-to-make-a-or-b-equal-to-c 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 将 c 的每一位右移到最右边跟1&操作,判断是1还是0
  • 同理判断a,b
class Solution {
public:
    int minFlips(int a, int b, int c) {
        int flip = 0, i;
        for(i = 0; i < 32; ++i)
        {
            if((c>>i)&1)//c该位为1
            {
                if((((a>>i)&1)==0) && (((b>>i)&1)==0))
                    flip++;//当a,b,该位都为0时,翻一位就可以了
            }
            else//c该位为0
            {
                if((((a>>i)&1)==1) && (((b>>i)&1)==0))
                    flip++;
                else if((((a>>i)&1)==0) && (((b>>i)&1)==1))
                    flip++;
                else if((((a>>i)&1)==1) && (((b>>i)&1)==1))
                    flip += 2;//a,b,都是1,两个都要翻,才可以得到0
            }
        }
        return flip;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员面试金典 - 面试题 16.09. 运算(只用+法做乘除)

    请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字, 程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。

    Michael阿明
  • LeetCode 1144. 递减元素使数组呈锯齿状(奇偶分别遍历)

    给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。

    Michael阿明
  • LeetCode 816. 模糊坐标

    我们有一些二维坐标,如 “(1, 3)” 或 “(2, 0.5)”,然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。

    Michael阿明
  • GIF格式解析

    Oceanlong
  • 【模板】割点 tarjan

    若为根,有两个及以上孩子算割点,不为根,点u存在连接的一个点v访问的最小值low[v]大于等于(等于就是最后还是走到这个点)dfn[u],则u为割点

    用户2965768
  • 递归回溯--复原IP地址

    There is no coming to consciousness without pain.

    程序员小王
  • 品质超高!超火的漫画线稿上色AI最新版来了(视频教程)

    还记得那个给本子上色的Style2paints吗?这是目前最好的线稿上色AI工具,没有之一。

    新智元
  • Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A. Be Positive(水题)

    题目链接:http://codeforces.com/contest/1130/problem/A

    Ch_Zaqdt
  • Web 安全漏洞 SSRF 简介及解决方案

    Update: 掘金评论区有同学提出通过域名获取 IP 地址时可能遭遇攻击,感谢提醒。本人非安全专业相关人士,了解不多,实在惭愧。

    逆葵
  • Tensorflow入门教程(二十六)——多尺度VNet(MSVNet)

    上一篇我分享了2D版本VNet模型改进的深度监督VNet,效果已经有所改善,那么今天我将再分享一个改进的模型即多尺度VNet。

    医学处理分析专家

扫码关注云+社区

领取腾讯云代金券