human
Solve in Python:
Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to target.

Each number in candidates may only be used once in the combination.

Note:

       All numbers (including target) will be positive integers.
       The solution set must not contain duplicate combinations.

Example 1:

Input: candidates = [10,1,2,7,6,1,5], target = 8,
A solution set is:
[
  [1, 7],
  [1, 2, 5],
  [2, 6],
  [1, 1, 6]
]

Example 2:

Input: candidates = [2,5,2,1,2], target = 5,
A solution set is:
[
  [1,2,2],
  [5]
]
assistant
#Here is Python program to find all unique combinations in candidates where the candidate numbers sums to target.

 class Solution:
     def combinationSum2(self, candidates, target):
         """
         :type candidates: List[int]
         :type target: int
         :rtype: List[List[int]]
         """
         if len(candidates)==0:
             return []
 
 
         candidates = sorted(candidates)
         print(candidates)
 
         results = []
 
 
         def find(curr_comb, curr_sum, candidates): #靠副作用填充results
             #curr_comb = curr_comb[:]
             for i,cand in enumerate(candidates):
 
                 if (cand+curr_sum) < target:
                     new_curr_comb = curr_comb[:]
                     new_curr_comb.append(cand)
                     find(new_curr_comb, curr_sum+cand, candidates[i+1:])
                 elif (cand+curr_sum) == target:
                     new_curr_comb = curr_comb[:]
                     new_curr_comb.append(cand)
                     if new_curr_comb not in results:
                         results.append(new_curr_comb)
                     #print(curr_comb, curr_sum, cand, 'target:',target)
                 else:
                     break
 
 
         find([], 0, candidates)
 
         return results