程式語言 - LeetCode - C++ - 46. Permutations



題目:


解答:

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<int> path;
        vector<vector<int>> r;
        vector<bool> used(nums.size(), false);

        auto dfs = [&](this auto&& dfs) -> void {
            if (path.size() == nums.size()) {
                r.push_back(path);
                return;
            }

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

                used[i] = true;
                path.push_back(nums[i]);

                dfs();
                
                path.pop_back();
                used[i] = false;
            }
        };

        dfs();
        return r;
    }
};