Мне нужна сумма чисел из-l oop, которых нет в списке в Python - PullRequest
0 голосов
/ 17 февраля 2020

У меня проблема с возвратом суммы. Я продолжаю получать ноль.

Я прокомментировал результаты печати для лучшего понимания. Опять же, мой код возвращает 0, а не 11.


A = [1, 5, 2, 1, 4, 0]

def solution(A):

    start = [i - j for i, j in enumerate(A)]

    start.sort()     #[-4, -1, 0, 0, 2, 5]

    for i in range(0, len(A)):
        pair = 0

        end = i + A[i]   #1, 6, 4, 4, 8, 5 

        count = bisect_right(start, end)     #4, 6, 5, 5, 6, 6

        count_1 = count-1        #3, 5, 4, 4, 5, 5
        count_2 = count_1 - i    #3, 4, 2, 1, 1, 0
        pair += count_2          #???????  I need the above added together like this 3+4+2+1+1+0 since 
                                           that's the answer.

    return pair

print(solution(A))

1 Ответ

0 голосов
/ 17 февраля 2020

Как вы написали в комментариях, последний счетчик2 равен нулю.

Вы добавляете ноль к нулю, l oop заканчивается, и вы возвращаете ноль.

Вам нужно запустить счетчик за пределами l oop, или вы можете суммировать и снаружи, например,

counts = []
for i, x in enumerate(A):
   counts.append(bisect_right(start, i + x) - 1 - i) 
return sum(counts)

Который можно переписать

return sum(bisect_right(start, i + x) - 1 - i for for i, x in enumerate(A)) 
...