程序查找与Python中的n相同的置位位数的更高数字?
假设我们有一个数字n;我们必须找到二进制数形式的最小的下一个较高的数字,该数字与n相同,为1。
因此,如果输入像n=7,则输出将为11,因为二进制中的7为0111,接下来从7高到3的结果为11,二进制中为1011。
为了解决这个问题,我们将按照以下步骤操作:
复制:=n,零:=0,一个:=0
当复制不为0且复制为偶数时,执行
零:=零+1
复制=复制/2
虽然复制是奇怪的,但是
一个:=一个+1
复制=复制/2
右:=一+零
n:=nOR(2^对)
n:=nAND取反(((2^right)-1)
n:=nOR((2^(ones-1))-1
返回n
让我们看下面的实现以更好地理解:
示例
class Solution:
def solve(self, n):
copy = n
zeros = 0
ones = 0
while copy and not copy & 1:
zeros += 1
copy >>= 1
while copy & 1:
ones += 1
copy >>= 1
right = ones + zeros
n |= 1 << right
n &= ~((1 << right) - 1)
n |= (1 << ones - 1) - 1
return n
ob = Solution()n = 7
print(ob.solve(n))输入项
7
输出结果
11
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短