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))
...全文
356 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
>>> 

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧