class Solution { // 回溯 List<List> res = new ArrayList<>(); // 结果集合 LinkedList path = new LinkedList<>(); public List<List> combinationSum3(int k, int n) { backTracking(n, k, 1, 0); return res; } public void backTracking(int targetSum, int k, int startIndex, int sum) { // 减枝 if (sum > targetSum) { return; } // 结束条件 if (path.size() == k) { if (sum == targetSum) { res.add(new ArrayList<>(path)); } return; } // 减枝 9 - (k - path.size()) + 1 for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) { path.add(i); sum += i; backTracking(targetSum, k, i + 1, sum); // 回溯,移除上次加入的元素 path.removeLast(); // 回溯,sum减去上次加的数字 sum -= i; } } }//转换为Dart内容:class Solution { List<List> res = []; // 结果集合 List path = []; List<List> combinationSum3(int k, int n) { backTracking(n, k, 1, 0); return res; } void backTracking(int targetSum, int k, int startIndex, int sum) { // 减枝 if (sum > targetSum) { return; } // 结束条件 if (path.length == k) { if (sum == targetSum) { res.add(List.from(path)); } return; } // 减枝 9 - (k - path.length) + 1 for (int i = startIndex; i <= 9 - (k - path.length) + 1; i++) { path.add(i); sum += i; backTracking(targetSum, k, i + 1, sum); // 回溯,移除上次加入的元素 path.removeLast(); // 回溯,sum减去上次加的数字 sum -= i; } } }

组合总和 III - 回溯算法实现

原文地址: https://www.cveoy.top/t/topic/qhuU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录