Tweet中最长的短语 - Python超时

时间:2017-10-08 00:14:00

标签: python algorithm twitter timeout time-complexity

输入 - 数组/列表a,常量k

输出 - 最长子列表/子阵列的长度,总和< = k

E.g。给出

  

我是鲍勃

即。数组[1,2,3]和k = 3

可能的子列表为[1],[2],[3],[1,2]

这里最长的子列表是[1,2]

长度 = 2

问题 - Hackerrank上的Python中的TimeOut错误

时间复杂度 - 1代表循环 - O(n)

空间复杂性 O(n)

def maxLength(a, k): lenmax=0 dummy=[] for i in a: dummy.append(i) if sum(dummy)<=k: lenmax=max(lenmax,len(dummy)) else: del dummy[0] return lenmax

1 个答案:

答案 0 :(得分:0)

通过更换耗时的操作来解决它

当超出HackerRank为每个环境设置的时间限制时发生超时"HackerRank TimeOut"

<强>解决方案

  

用变量

替换sum()函数

在最坏的情况下,如果要一直总结整个列表,sum(list)将花费O(n ^ 2)时间。

相反,维护变量意味着整个函数的O(n)为O(1),用于更新变量。

def  maxLength(a, k):
lenmax=0
dummy=[]
sumdummy=0
for i in a:
    dummy.append(i)
    sumdummy+=i
    if sumdummy<=k:
        lenmax=max(lenmax,len(dummy))
    else:
        sumdummy-=dummy[0]
        del dummy[0]

return lenmax