46 전체 정렬

5941 단어 Leetcode
고전 해법, 귀속 + 표기 접근 그룹
//  
class Solution {
    int n;
    unordered_map<int, bool> vis;
    vector<int> p;
    vector<vector<int>> ans;
public:

    //  , 
    void generate(int index, const vector<int>& nums)
    {
        if(index == n) //  
        {
            ans.push_back(p);
            return;
        }
        for(auto i : nums) //  , 
        {
            if(vis[i] == false)
            {
                p.push_back(i);
                vis[i] = true; //  
                generate(index + 1, nums);    
                vis[i] = false; //  , 
                p.pop_back();
            }
        }
    }

    vector<vector<int>> permute(vector<int>& nums) {
        n = nums.size();
        for(int i : nums) vis[i] = false;
        generate(0, nums);
        return ans;
    }
};

좋은 웹페이지 즐겨찾기