1 给定一个整数 n,返回 n! 结果尾数中零的数量。
class Solution(object):
def trailingZeroes(self,N):
i=1
j=1
s=0
while(pow(5,i)<=N):
i+=1
while j<=i:
s+=N//(pow(5,j))
j+=1
return s
看的别人的答案明白了解题思路。只有5才能产生0.数5的个数
5!=5x4x3x2x1 [5]
30!=[5x6,5x5,5x4,5x3,5x2,5x2]但是其中有个其中有个[5x5]相当于2个5.
2 猜数字的大小
class Solution(object):
def guessNumber(self, n):
"""
:type n: int
:rtype: int
"""
low=1
high=n
while(low<=high):
mid=int((low+high)/2)
if guess(mid)==0:
return mid
elif guess(mid)==-1:
high=mid-1
else:
low=mid+1
这道题的题目表达的不是很清楚。这道题目是数让我们猜个数,guess函数判断我们猜的数是大还是小,guess返回的是以他的数为标志的,比如系统输入的数是5,我们猜3,返回的是我们的数偏大,而不是我们常规的想的偏小。
3编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
class Solution(object):
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
while True:
if n<10:
if n in [1,7]:
return True
break
else:
return False
break
else:
x=0
for i in str(n):
x=x+int(i)**2
n=x
这道题关键在于只有1和7是快乐数字,而其他的[2,3,4,5,6,8,9]不是快乐自,这是终止条件,所以当计算出来的数字,是个位数字的时候就可以进行判定
4山羊数
class Solution(object):
def toGoatLatin(self, S):
L=S.split()
l=len(L)
i=1
x=[]
z=''
while(i-1<l):
if L[i-1][0] in ['a','e','i','o','u','I','A','E','O','U'] or len(L[i-1])==1:
x.append(L[i-1]+'ma'+'a'*i)
else:
x.append(L[i-1][1:]+L[i-1][0]+'ma'+'a'*i)
i+=1
for j in x:
z=z+j+' '
return z[:-1]
山羊数挺简单的就是安装题目的意思修改字符串在合并就好了
5 汉明距离
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
l=bin(x)[2:]
m=bin(y)[2:]
l=l[::-1]
m=m[::-1]
d=len(l)-len(m)
while(d>0):
m=m+('0')
d=d-1
while(d<0):
l=l+'0'
d+=1
s=0
i=0
while(i<len(l)):
if l[i]!=m[i]:
s+=1
i+=1
return s
这道题挺简单的,主要是因为python有个bin()函数,直接的出整数的二进制值
6找出数组中消失的数
n=[]
i=0
while i<len(num):
j=abs(num[i])-1
if num[j]>0:
num[j]=-num[j]
i+=1
i=0
while i<len(num):
if num[i]>0:
n.append(i+1)
i+=1
return n
这一题限制时间,看了大神的结论,所以只能单个循环,第一个循环将出现过的位置变成负数,[4,3,2,7,8,2,3,1] 例如这个,开始 num[0]=4所以我们就让数组的第四位设置成负数也就是num[4-1]=-7,这样经过一轮循环后,数组中在1到n出现的数字位数都变成负数了。所以第二个循环就统计num中是正数的位置,位置加1就是没出现在1~n,即我们要的数