二分查找的下界为 0,上界可以粗略地设定为 x。在二分查找的每一步中,我们只需要比较中间元素 bit 的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
classSolution: defmySqrt(self, x: int) -> int: if x == 0: return0 small = 1 big = x while big - small > 1: bit = (small + big) // 2 if bit ** 2 == x: return bit elif bit ** 2 < x: small = bit elif bit ** 2 > x: big = bit