跳至主要內容

1318. 或运算的最小翻转次数

T4mako算法位运算数组小于 1 分钟

1318. 或运算的最小翻转次数

中等

题目描述open in new window

解法:
使用预算将每个数的最后一位取出,然后将原本的数字右移一位
判断最后一位的不同情况,处理 res

class Solution {
    public int minFlips(int a, int b, int c) {
        int res = 0;
        for (int i = 0; i < 32; i++) {
            int num_a = a & 1; a >>= 1; // 将最后一位取出
            int num_b = b & 1; b >>= 1; 
            int num_c = c & 1; c >>= 1;
            if(num_a == 0 && num_b == 0 && num_c == 1) res += 1;
            else if(num_a == 1 && num_b == 1 && num_c == 0) res += 2;
            else if(num_c == 0 && num_a + num_b == 1) res += 1;
        }
        return res;
    }
}
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5