快手算法笔试求解答
1.字符消消乐,超3个消掉,通过70%
#快手##笔试题目#
s = input() flag = 1 while(flag==1): count = 1 i = 1 flag = 0 while(i<len(s) and flag==0): if s[i]==s[i-1]: count += 1 else: count = 1 if count == 3: flag = 1 s=s.replace(s[i-2:],s[i+1:]) break else: flag = 0 i += 1 print(s)
2.移动一根火柴,使数最大,没做
3.输入k,n。前k值为1,之后a[i]=a[i-1]+...+a[i-k],通过10%,一直提示算法循环过大,不知道怎么提升了。dp[i]=2*dp[i-1]-dp[i-k-1]
def fun(k,n): if n<k: return 1 else: a = [1]*k a.append(k) for i in range(k+1,n+1): last = a[i-k-1] re = (a[-1]*2)%397-last a.append(re) return re if __name__=="__main__": k,n=list(map(int,input().strip().split())) print(fun(k,n))