前提・実現したいこと
配列が与えられた時に最長の1の数を返すプログラムを書いています。
#入力 A = [1,1,0,0,0,1,1,1,1,0,0] #出力 4
発生している問題・エラーメッセージ
時間計算量(オーダ)を考えたいのですが、今回のプログラムだと最悪の場合で0(n^2)
になるという理解で正しいでしょうか。
関数内で関数を呼び出す場合、今回のように繰り返し O(n)が更にn回繰り返されると考えられますか。
該当のソースコード
python
1def loggestnum(A): 2 max = 0 3 for i in range(len(A)): #繰り返し O(n) 4 p = countones(A, i) #繰り返し O(n) 5 if (max<p): 6 max = p 7 return max 8 9def countones(A,i): 10 p = 0 11 j = i 12 while j <= len(A) and A[j] == 1: 13 p = p+1 14 j = j+1 15 return p 16 17A = [1,1,0,0,0,1,1,1,1,0,0] 18print(loggestnum(A))
補足情報(FW/ツールのバージョンなど)
python 3.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/10 03:15 編集
2019/07/07 04:47