Permutations - Implementation

Here is the implementation:

function permute(nums):
    result = []
    used = array of n false values
    backtrack([])
    return result

function backtrack(current):
    if current.length == nums.length:
        result.append(copy of current)
        return

    for i from 0 to nums.length - 1:
        if used[i]:
            continue

        used[i] = true
        current.append(nums[i])
        backtrack(current)
        current.pop()
        used[i] = false

O(nn!)O(n \cdot n!) time, O(n)O(n) space for recursion and used array.