var combinationSum = function(candidates, target) {const list = [],temp = []// 通过排序,比较大小实现剪枝,排除不必要的遍历candidates.sort()backtrack(0, 0)return listfunction backtrack(index, sum) {if(sum > target) {return}if (sum === target) {list.push([...temp])}// 从上一次的位置开始,避免重复结果for(let i = index; i < candidates.length;i++) {let num = candidates[i]// 剪枝,排除不必要的遍历if((num + sum) > target) {continue}temp.push(num)sum += numbacktrack(i, sum)temp.pop()sum -= num}}};
