Реализация Java в сочетании сумма LeetCode 39

39. Комбинация суммы

Учитывая не-повторять массив кандидат элементов и целевой целевой номер, вы можете найти все кандидат для целевых чисел и их комбинаций.

Неограниченное число кандидатов могут быть выбраны повторяется.

Описание:

Все цифры ( в том числе цели) являются положительными целыми числами.
Решение Set не может содержать их дубликаты комбинаций.
Пример 1:

Входной сигнал: кандидаты = [2,3,6,7], целевая = 7,
множество решается:
[
[7],
[2,2,3]
]
Пример 2:

Входной сигнал: кандидаты = [2,3,5], целевая = 8,
множество решается:
[
[2,2,2,2],
[2,3,3],
[3,5]
]

Источник: пребывание кнопка (LeetCode)
ссылка: https: //leetcode-cn.com/problems/combination-sum
авторское право вычета из всех сетей. Коммерческая перепечатка пожалуйста , свяжитесь с уполномоченным должностным лицом, некоммерческим оттиском пожалуйста , укажите источник.

class Solution {
   public List<List<Integer>> combinationSum(int[] candidates, int target) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(candidates);
        //System.out.println(candidates);
        backtrack(candidates, target, res, 0, new ArrayList<Integer>());
        return res;
    }

    private void backtrack(int[] candidates, int target, List<List<Integer>> res, int i, ArrayList<Integer> tmp_list) {
        if (target < 0) return;
        if (target == 0) {
            res.add(new ArrayList<>(tmp_list));
            return;
        }
        for (int start = i; start < candidates.length; start++) {
            if (target < 0) break;
            //System.out.println(start);
            tmp_list.add(candidates[start]);
            //System.out.println(tmp_list);
            backtrack(candidates, target - candidates[start], res, start, tmp_list);
            tmp_list.remove(tmp_list.size() - 1);
        }
    }
}
Освобожденные 1153 оригинальные статьи · вона похвала 10000 + · просмотров 420 000 +

рекомендация

отblog.csdn.net/a1439775520/article/details/104314767