私はCodilityで行うデモタスクを与えられました。私が間違っていることを理解するためにいくつかの問題を抱えています。タスク:Python 2.7の平衡指数
のPython 2.7環境
にN個の整数からなるゼロインデックス付き配列作業が与えられます。この配列の平衡指数は、0≦P < Nであり、下位指標の要素の合計が上位指標の要素の合計と等しい任意の整数Pである。すなわち、
A [0] + A [1] + A [P-1] = A [P + 1] + ... + A [N-2] + A [N-1]となる。
ゼロ要素の合計は0と見なされます。これは、P = 0またはP = N-1の場合に発生します。例えば
、検討N = 8つの要素からなる以下の配列:
A[0] = −1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7]
P = 3である:
A[0] = -1
A[1] = 3
A[2] = -4
A[3] = 5
A[4] = 1
A[5] = -6
A[6] = 2
A[7] = 1
P = 1であるため、このアレイの均衡インデックスでありますこの配列の平衡インデックスため::P = 7があるため、また、平衡指標である
A[0] + A[1] + A[2] = −2 = A[4] + A[5] + A[6] + A[7]
A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0
及び7
それは条件0≤P < N.
書き込みAを満たさないので、P = 8は、平衡インデックスはないよりも大きいインデックスを持つ要素がありません関数:Nの整数からなるゼロインデックス配列を与え、
DEF溶液(A)
は、その平衡インデックスのいずれかを返します。平衡インデックスが存在しない場合、関数は-1を返すはずです。応答で
は、私は次のように書いた:私は、コードを遵守すると
def solution(A):
if len(A) == 0: #If we're working with an empty list, the method should give us an empty list message and terminate there
return "Empty list, no integers to work with"
else:
equi = []
x = 0
length = len(A)
rightSum = []
leftSum = []
while x < length:
for i in A:
rightSum = A[1:i-1]
leftSum = A[i+1:length-2]
if sum(rightSum) == sum(leftSum):
equi.append(i)
return equi
else:
return -1
x += 1
pass
solution([-1,3,-4,5,1,-6,2,1])
、私が取得保管-1テストリストのために、私はエクイ取得する必要があるにもかかわらず、[1,3,7]。
もう1つの質問ですが、なぜメソッドの最後に 'pass'キーワードが必要ですか?
私はPythonのコーディングとコーディングに一般的に非常に新しいです。 y'allが提供できるどんな助力も高く評価されます。
ありがとう9000、それはボーナスポイントについての本当に有益な提案でした。私は全体の合計からインデックス値を単に差し引くことについては考えていませんでした。将来の参照のために、線形と二次の違いがパフォーマンス、オーバーヘッドなどに及ぼす影響の程度はどれくらいでしょうか?私はまだそこにはいませんが、パフォーマンスの改善やオーバーヘッドの減少が歓迎されると思います。 – Ram