I found an interesting problem on https://leetcode.com/problems/combination-sum-ii/:
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]
]

I tried it in Python, but could not do it. Can you solve it?
class Solution(object):
     def combinationSum2(self, candidates, target):
         """
         :type candidates: List[int]
         :type target: int
         :rtype: List[List[int]]
         """
         result = []
         temp = []
         candidates.sort(reverse=True)
 
         self.util(candidates, target, result, temp)
         return result       
 
     def util(self, nums, target, result, temp):
 
         for i in range(len(nums)): 
             if nums[i] == target and (temp + [nums[i]] not in result):
                 result.append(temp + [nums[i]])
             elif nums[i] < target:
                 self.util(nums[i + 1:], target - nums[i], result, temp + [nums[i]])
 
         return