2017-10-08 4 views
1

入力 - 配列/リストA、定数k最長のフレーズ - Pythonのタイムアウト

出力 - 和< = kの最長のサブリスト/サブアレイの長

例えば

与えられた私は、可能なボブ

すなわち配列[1,2,3]そしてk = 3つの

サブリスト午前ここ[1],[2],[3],[1,2]

最長サブリストは[1,2]

= 2

であります

発行 - HackerrankにPythonでタイムアウトエラー

時間複雑 - ループの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

+0

コードに実際にどのような問題がありますか?ハッカーの時間切れは問題ではありません。 – James

+0

は、特定のテストケースを実行するために制限を超過したようです。したがって、時間のかかる操作を取り除くことで解決する必要がありました。例えばリスト全体の合計 –

答えて

0

解決しますそれは時間のかかる操作を置き換えることによって行われます。

Timそれはすべての環境のためにHackerRankによって設定された制限時間を超えたときに電子アウトが発生し"HackerRank TimeOut"

ソリューション

(最悪の場合、要するに変数

で合計()関数を置き換えリスト)は、リスト全体が常に合計される場合は、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 
関連する問題