Problem: Return all permutations of distinct integers.
Approach: At each position, try each unused element.
function backtrack(nums, current, used, result):
if current.length == nums.length:
result.add(copy of current)
return
for i from 0 to nums.length - 1:
if used[i]: continue
used[i] = true
current.add(nums[i])
backtrack(nums, current, used, result)
current.removeLast()
used[i] = false
Time: . Space: .