LeetCode的第476题,求补数,哪位老哥帮我看一下哪里错误

lei_jw 学生  2017-11-13 06:03:48
#LeetCode476题,求补数
我才接触python,自己写的代码,但是submit的时候说错误。正解当input是2的时候output应该是1
class Solution:
def findComplement(self, num):
"""
:type num: int
:rtype: int
"""
count=0
sum=0
re=[]
self.num=num
#把num转换成二进制,并把二进制码装入re列表
while num!=0:
num,m=divmod(num,2)
re.append(m)
#把列表中的元素去反
print(re)
for i in range(len(re)):
if re[i]==0:
re[i]=1
else:
re[i]=0
print(re)
#转为十进制
for i in range(len(re)):
if re[i]==1:
sum+=(2**(len(re)-i-1))
return sum
test=Solution()
print(test.findComplement(2))
...全文
334 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lei_jw 2017-11-21
性能提升是肯定的,我刚学不久,写不出这么秀 的
  • 打赏
  • 举报
回复
混沌鳄鱼 2017-11-13

>>> def find_complement(num): return num ^ (pow(2,len(bin(num))-2)-1)
这么写发性能可能稍有提升.
  • 打赏
  • 举报
回复
混沌鳄鱼 2017-11-13

>>> def find_complement(num): return num ^ (pow(2,len(bin(num)[2:]))-1)

>>> find_complement(5)
2
>>> find_complement(1024)
1023
>>> find_complement(1)
0
>>> find_complement(0)
1
>>> find_complement(7)
0
>>> 
  • 打赏
  • 举报
回复
相关推荐
发帖
其他开发语言
加入

3386

社区成员

其他开发语言 其他开发语言
申请成为版主
帖子事件
创建了帖子
2017-11-13 06:03
社区公告
暂无公告