美团第一题 有python AC的嘛···

def aa(len_n,list_str,k):
     #倒序节约时间
    for L in range(len_n,0,-1):
        for x in range(len_n+1-L):
            if sum(list_str[x:L])%k==0:
               res=L
               return res
len_n=int(input())
list_str=[int(x)for x in input().split()]
k=int(input())
res=0
 print(aa(len_n,list_str,k))

全部评论
这是我的 超时了··· 67%
点赞 回复 分享
发布于 2017-08-31 22:07
你倒是用滑动窗口优化一下啊
点赞 回复 分享
发布于 2017-08-31 22:07
Go同样的思路(大的序列开始找&每次求序列的和不做优化)跑出来的结果是 AC,偶尔会出92%。总体还是暴力解法。 Java没跑,不知道结果怎么样。 求子序列和的方法改进一下Go就可以全AC了。
点赞 回复 分享
发布于 2017-08-31 22:10
你的这个第二个循环从开始不是很好吗  这样节省了很多的时间   比如有list=[1,2,3,4,5] k=5 求出sum=[0,1,3,6,10,15] for i in range(len(list),-1,-1):      for j in range(i):         if (sum[i]-sum[j])%5==0:                 #直接求出长度为 i-j                 # 中断
点赞 回复 分享
发布于 2017-09-01 15:17
def longestA(arr, K, N): start, end = [-1] * K, [-1] * K start[0] = end[0] = s = e = n = m = 0 for i in range(N): m = (m + arr[i]) % K end[m] = i+1 if start[m] < 0: start[m] = i+1 if end[m] - start[m] > e - s: s, e, n = start[m], end[m], m return e-s N = int(raw_input()) arr = map(int, raw_input().split()) K = int(raw_input()) print longestA(arr, K, N)
点赞 回复 分享
发布于 2017-09-02 11:40

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务