lc-go/solutions/13/q1318/solution.go

29 lines
498 B
Go

// Package q1318 implements a solution for https://leetcode.com/problems/minimum-flips-to-make-a-or-b-equal-to-c/
package q1318
func minFlips(a int, b int, c int) int {
aorb := a | b
flips := 0
p := 1
for p <= aorb || p <= c {
switch {
case c|p == c && aorb|p != aorb:
flips++ // c has the bit
case c|p != c && aorb|p == aorb:
if a|p == a {
flips++ // a has the bit
}
if b|p == b {
flips++ // b has the bit
}
}
p <<= 1
}
return flips
}
var _ = minFlips