题解 | #求最大连续bit数#

求最大连续bit数

https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2

题目估计是想考二分法,以下是二分法解答。

def fun():
    a = bin(int(input().strip()))[2:]
    res_range = [0, len(a)]  # 结果应在的范围
    while True:
        # 二分法的范围已经够小了就暴力遍历
        if res_range[1] - res_range[0] < 5:
            for i in range(res_range[1], res_range[0]-1, -1):
                if i*'1' in a:
                    print(i)
                    return
        # 二分过程
        mid = sum(res_range) // 2
        if mid * '1' in a:
            res_range = [mid, res_range[1]]
        else:
            res_range = [res_range[0], mid]

fun()

全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务