二元间隙算法的大O分析

时间:2018-03-14 08:03:12

标签: java algorithm big-o

正整数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分析。

0 个答案:

没有答案