変数の初期値設定の変更が結果に与える影響
CodilityのMaxSliceSumという問題
上記の問題を日本語で説明している記事
を解き、コンパイルして評価したのですが、テストケースA=[-10]
の時に0ではなく-10
を返すように修正する必要がわかったため、変数の初期値に問題で指定されている想定されうる最も小さい値を入れるコードにしました。
しかし、変更後のコードでは他のバグが生じてしまい、修正方法がわかりません。
変更前のコードでは、テストケースA=[3,2,-6,4,0]
の時に5
が返されて要求を満たしています。
変更前
def solution(A):
maxsum = 0
start = 0
end = 0
for i in range(len(A)):
tmp = A[i]
for j in range(i+1, len(A)):
if tmp + A[j] > maxsum:
tmp = tmp + A[j]
else:
break
if tmp > maxsum:
maxsum = tmp
return (maxsum)
しかしながら、変更後のコードではA=[3,2,-6,4,0]
の時に4
が返されてしまうようになりました。
変更後
def solution(A):
maxsum = −2147483648 #変数maxsumの初期値を変更
start = 0
end = 0
for i in range(len(A)):
tmp = A[i]
for j in range(i+1, len(A)):
if tmp + A[j] > maxsum:
tmp = tmp + A[j]
else:
break
if tmp > maxsum:
maxsum = tmp
return (maxsum)