class Solution {
public:
    /**
     * @param nums: A list of integers.
     * @return: A list of permutations.
     */
    vector<vector<int> > permute(vector<int> nums) {
        // write your code here
        vector<vector<int>> results;
        vector<int> soFar;
        vector<bool> visited(nums.size(), false); 
        findAllPermutations(0, nums, visited, soFar, results);
        return results;
    }

    void findAllPermutations(int i, vector<int>& nums, vector<bool>& visited, vector<int>& soFar, vector<vector<int>>& results
) {
        if (soFar.size() == nums.size()) {
            results.push_back(soFar);
            //return;
        }    

        for (int i = 0; i < nums.size(); i++) {
            if (visited[i]) {
                continue;
            }
            visited[i] = true;
            soFar.push_back(nums[i]);

            findAllPermutations(i, nums, visited, soFar, results);
            visited[i] = false;
            soFar.pop_back();
        }

        //return;
}
};

results matching ""

    No results matching ""