python计算数字各个位的和_Python按位和多个数字,比迭代按位运算符更快?

博主正在寻求一种在Python中高效地应用位运算符(如AND)于两个以上数字的方法,特别是针对大范围数字和数字集合。当前的O(n^2)解决方案被认为是过于缓慢的。博主考虑了计算每列位数的策略来提前终止运算,一旦发现0,就跳过后续计算。同时,也对扩展到其他运算符如XOR表示兴趣。寻求关于性能优化的建议和实现策略。
摘要由CSDN通过智能技术生成

我正在寻找一种最快的方式(O(n ^ 2)是不可接受的)在

Python中应用AND运算符超过2个数字.

有两种情况:

a)在输入时,我们的数字在M和N之间

b)可以有一组任何自然数

目前我的代码使用&循环中的运算符,它总是计算结果位(尽管我们知道,如果我们有0,那么下一个和所有下一个结果位将始终为0).我的一个想法是计算每列的位数,对于给定的列,当存在0时停止计算,因为结果位将为0.

示例(包含在下面的测试代码中)

现有(迭代),相当慢(O(n ^ 2))代码:

def solution(M, N):

result = M

for x in xrange(M, N):

result &= x

return result

def solution_sets(N):

result = N[0]

for x in N:

result &= x

return result

print solution(5, 7) # 4

print solution(64, 128) # 64

print solution(44, 55) # 32

print solution_sets([60, 13, 12, 21])

如果该解决方案可扩展到例如XOR运算符将是好的.

我想问一些关于如何在Python语言中开始实现它并最大化性能的想法.

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值