解題思路
每次都把 a, b, c 的LSB 抓出來看,如果 a, b 的 bit OR 不等於 c,就要進一步檢查。
如果 c 是 0,代表 a,b 一定要都是0,所以算 a, b是1的數量。
如果 c 是 1,那就只需要改一個bit,直接加一就好。
程式碼
class Solution {
public:
int minFlips(int a, int b, int c) {
int ans = 0;
while(a != 0 || b!= 0 || c != 0)
{
int m1 = a % 2, m2 = b % 2, m3 = c % 2;
if((m1 | m2) != m3)
{
if(m3 == 0)
ans += (m1 == 1) + (m2 == 1);
else
ans += 1;
}
a /= 2;
b /= 2;
c /= 2;
}
return ans;
}
};
沒有留言:
張貼留言