Divide and conquer algorithm for max binary gaps
Bug

What will be the value of merge_step([array], [array], result)? Nothing.
The solution will be incorrect for 0 and 1.

Algorithm

Converting an integer to binary string, and then converting that to a list of integers (zeros and ones), and then slicing dicing lists is very inefficient.

A much more simple and efficient approach is to count the sequences of unset bits:

longest = 0
current_len = 0

while num &gt; 0:
    if num &amp; 1:
        if current_len &gt; longest:
            longest = current_len
        current_len = 0
    else:
        current_len += 1
    num &gt;&gt;= 1

return longest


The reason why the time complexity of this is \$O(\log n)\$ is that we're counting bits, which grows much slower than the value of \$n\$.

Doctests

As I pointed out in the previous review, I strongly recommend to use doctests to verify your implementation.