1. var combinationSum2 = function (candidates, target) {
    2. candidates.sort()
    3. const len = candidates.length
    4. let list = []
    5. backtrack([], 0, 0)
    6. return list
    7. function backtrack(temp, cur, sum) {
    8. if (sum > target) return
    9. if (sum === target) {
    10. list.push([...temp])
    11. }
    12. for (let i = cur; i < len; i++) {
    13. // 剪枝,后续相同元素不需要排序,避免重复
    14. if(cur <= i -1 && candidates[i] === candidates[i - 1]) continue
    15. temp.push(candidates[i])
    16. sum += candidates[i]
    17. backtrack(temp, i + 1, sum)
    18. sum -= candidates[i]
    19. temp.pop()
    20. }
    21. }
    22. };