All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0046_permutations.Solution.cpp Maven / Gradle / Ivy

There is a newer version: 1.8
Show newest version
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Backtracking
// #Algorithm_I_Day_11_Recursion_Backtracking #Level_2_Day_20_Brute_Force/Backtracking
// #Udemy_Backtracking/Recursion #Big_O_Time_O(n*n!)_Space_O(n+n!)
// #2024_05_25_Time_0_ms_(100.00%)_Space_9.6_MB_(50.28%)

#include 

class Solution {
public:
    std::vector> permute(std::vector& nums) {
        if (nums.empty()) {
            return {};
        }
        std::vector> finalResult;
        std::vector currResult;
        std::vector used(nums.size(), false);
        permuteRecur(nums, finalResult, currResult, used);
        return finalResult;
    }

private:
    void permuteRecur(const std::vector& nums, 
                      std::vector>& finalResult, 
                      std::vector& currResult, 
                      std::vector& used) {
        if (currResult.size() == nums.size()) {
            finalResult.push_back(currResult);
            return;
        }
        for (size_t i = 0; i < nums.size(); ++i) {
            if (used[i]) {
                continue;
            }
            currResult.push_back(nums[i]);
            used[i] = true;
            permuteRecur(nums, finalResult, currResult, used);
            used[i] = false;
            currResult.pop_back();
        }
    }
};




© 2015 - 2025 Weber Informatics LLC | Privacy Policy