Найдите количество трех сумм в списке

Я собираюсь репонировать (так как я еще не достаточно крут, чтобы комментировать) в правильном ответе .... на тот случай, если кто-либо еще подумал, что ему нужно лучше объяснить.

SELECT temp_table_1.name
FROM original_table_1 temp_table_1
LEFT JOIN original_table_2 temp_table_2 ON temp_table_2.name = temp_table_1.name
WHERE temp_table_2.name IS NULL

И Я видел синтаксис в FROM, нуждающийся в запятых между именами таблиц в mySQL, но в sqlLite он, казалось, предпочитал пространство.

Суть в том, что вы используете неправильные имена переменных, которые оставляют вопросы. Мои переменные должны иметь больше смысла. И кто-то должен объяснить, почему нам нужна запятая или нет запятой.

1
задан eyllanesc 17 January 2019 в 03:50
поделиться

2 ответа

Вам просто нужно настроить свое решение, чтобы подсчитать решение, а не возвращать его после того, как найдено первое решение:

def find3Numbers(A,arr_size,sum):
    count_sums = 0

    for i in range(0,arr_size-1): 
        #Find pair in subarray A[i+1..n-1]  
        # with sum equal to sum - A[i] 
        s = set() 
        curr_sum = sum - A[i] 
        for j in range(i+1,arr_size): 
            if (curr_sum - A[j]) in s: 
                count_sums += 1 # Count here
            s.add(A[j]) 

    return count_sums # Finally return the count

Обратите внимание, это не означает, что ваш алгоритм теперь корректен. Двигаясь дальше, вы можете использовать счетный набор, а не обычный набор для s. См. collections.Counter .

0
ответ дан smac89 17 January 2019 в 03:50
поделиться

Используя itertools.combination

from itertools import combinations

numList = [1,2,3,4,5,6,7]

def check(value):
    return sum(value) == 10

filtered = list(filter(check, list(combinations(numList, 3))))
print(filtered)
#[(1, 2, 7), (1, 3, 6), (1, 4, 5), (2, 3, 5)]

Комбинации находят все возможные комбинации, затем я просто отфильтровал их до тех, которые добавили до 10

0
ответ дан Jab 17 January 2019 в 03:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: