正整数N内的二进制间隙是连续零的任何最大序列,在N的二进制表示中被两端的1包围。
例如,数字9具有二进制表示1001并且包含长度为2的二进制间隙。数字529具有二进制表示1000010001并且包含两个二进制间隙:长度为4且长度为3的一个。数字20具有二进制表示10100并且包含一个长度为1的二进制间隙。数字15具有二进制表示1111并且没有二进制间隙。
这是我提出的代码,
public int solution(int N) {
int maxCount = 0;
boolean foundOne = false;
while (N > 0) {
int currCount = 0;
if(!foundOne && N%2 == 1) {
foundOne = true;
}
while (N > 0 && N % 2 == 0 && foundOne) {
currCount++;
N /= 2;
}
if (currCount > maxCount) {
maxCount = currCount;
}
N /= 2;
}
return maxCount;
}
我需要帮助分析此代码的Big O复杂性,如果可能,请建议使用O(log(N))算法。提前谢谢。
Is my code solution for Binary Gap is correct or not? What should I improved in that?有一些二元间隙问题的替代解决方案,但不包括Big O分析。