看@justyy刷题刷的那么欢乐,我也开始刷题了。
不得不说,这刷题真难………有点高考的时候老师专门出题刁难人的感觉。
今天的题目是:
难得的一道我能清楚看懂题目说什么的题。
我的解题思路很直接,直接把这个数先除以2,能整除就是偶数,除以2.否则就是奇数加一。然后计算需要的步数。
代码如下:
class Solution:
def numSteps(self, s: str) -> int:
s=int(s,2)
nums=0
while s != 1:
if s % 2 == 0:
s//=2
else:
s+=1
nums += 1
return nums
后来想着,第一步先直接判断尾数是0还是1,或许能少计算一点,速度会快一点儿。于是就试试写着看看。
class Solution:
def numSteps(self, s: str) -> int:
k=s
if s[-1:] == "1":
s = int(s,2)+1
else:
s=int(s,2)//2
nums=1
while s != 1:
if s % 2 == 0:
nums += 1
s//=2
else:
nums += 1
s+=1
else:
if k=="1":
nums=0
return nums
虽然代码很长很傻逼,但是,真的快了。
算法这玩意真TM神奇~
拍拍
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit