1318. Minimum Flips to Make a OR b Equal to c

Difficulty:
Related Topics:
Similar Questions:

Problem

Given 3 positives numbers a, b and c. Return the minimum flips required in some bits of a and b to make ( a OR b == c ). (bitwise OR operation). Flip operation consists of change any single bit 1 to 0 or change the bit 0 to 1 in their binary representation.

  Example 1:

Input: a = 2, b = 6, c = 5
Output: 3
Explanation: After flips a = 1 , b = 4 , c = 5 such that (a OR b == c)

Example 2:

Input: a = 4, b = 2, c = 7
Output: 1

Example 3:

Input: a = 1, b = 2, c = 3
Output: 0

  Constraints:

Solution

/**
 * @param {number} a
 * @param {number} b
 * @param {number} c
 * @return {number}
 */
var minFlips = function(a, b, c) {
    var num = 0;
    for (var i = 0; i < 32; i++) {
        var n = Math.pow(2, i);
        if ((c & n) && !(a & n) && !(b & n)) {
            num += 1;
        } else if (!(c & n)) {
            if (a & n) num += 1;
            if (b & n) num += 1;
        }
    }
    return num;
};

Explain:

nope.

Complexity: