Math Fundamentals18 sections · 814 units
Open in Course

Permutations II Pseudocode

(Backtracking with pruning)

function permuteUnique(nums):

nums.sort()

result = []

used = [false] * n

backtrack([], used, result)

return result

function backtrack(current, used, result):

if len(current) == n:

result.append(copy of current)

return

for i from 0 to n-1:

if used[i]:

  continue

if i > 0 and nums[i] == nums[i-1] and not used[i-1]:

  continue

current.append(nums[i])

used[i] = true

backtrack(current, used, result)

current.pop()

used[i] = false