Алгоритм возврата — самое эффективное решение из 2Python

Программы на Python
Ответить
Гость
 Алгоритм возврата — самое эффективное решение из 2

Сообщение Гость »


Я решил вопрос о Lettcode, используя алгоритм обратного отслеживания, но нашел два решения и хоть убей не могу понять, какое из них более эффективно. Буду признателен за любую помощь. Обратите внимание, что разница в решениях находится только внутри «elif rest_target > 0:»

Вопрос: Учитывая массив различных целых чисел-кандидатов и целевую целочисленную цель, верните список всех уникальных комбинаций кандидатов, в которых сумма выбранных чисел равна целевому значению. Вы можете возвращать комбинации в любом порядке. Одно и то же число может быть выбрано из кандидатов неограниченное количество раз. Две комбинации уникальны, если частота хотя бы одного из выбранных чисел различна. Тестовые примеры генерируются таким образом, чтобы количество уникальных комбинаций, дающих целевое значение, составляло менее 150 комбинаций для данного входного сигнала. Решение 1:

класс Решение: def комбинацияSum(self, кандидаты: Список[int], цель: int) -> Список[Список[int]]: def backtrack(cand_i, curr_combination, rest_target): нелокальные комбинации если rest_target == 0: Комбинации.append(curr_combination.copy()) элиф оставшаяся_цель > 0: для я в диапазоне (cand_i, len (кандидаты)): curr_combination.append(кандидаты) backtrack(i, curr_combination, rest_target - кандидаты) curr_combination.pop() комбинации = Дек() возврат (cand_i=0, curr_combination=Deque(), rest_target=target) возвратные комбинации Решение 2:
класс Решение: def комбинацияSum(self, кандидаты: Список[int], цель: int) -> Список[Список[int]]: def backtrack(cand_i, curr_combination, rest_target): нелокальные комбинации если rest_target == 0: Комбинации.append(curr_combination.copy()) элиф оставшаяся_цель > 0: для я в диапазоне (cand_i, len (кандидаты)): curr_combination.append(кандидаты) backtrack(i, curr_combination, rest_target - кандидаты) curr_combination.pop() комбинации = Дек() возврат (cand_i=0, curr_combination=Deque(), rest_target=target) возвратные комбинации
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»