leetcode-dfs-47. 全排列 II

 

leetcode-dfs-47. 全排列 II

 

class Solution {
public:
    vector<vector<int>> res;
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        vector<int> temp;
        for(int i = 0; i < nums.size(); i++){
            temp.push_back(nums[i]);
        }
        dfs(nums,temp,0);
        /*
        函数将重复的元素放到vector的尾部 然后返回指向第一个重复元素的迭代器 
        再用erase函数擦除从这个元素到最后元素的所有的元素
        */
        sort(res.begin(), res.end());
        res.erase(unique(res.begin(), res.end()), res.end());
        return res;
    }

    void dfs(vector<int>& nums,vector<int>& temp, int index){
        if(index==nums.size()){
            res.push_back(temp);
            return;
        }

        for(int i = index; i < nums.size(); i++){
            swap(temp[index], temp[i]);
            cout<<"index: "<<index<<endl;
            dfs(nums, temp, index+1);
            swap(temp[i], temp[index]);
        }
    }
};

 

leetcode-dfs-47. 全排列 II

上一篇:数据库存储过程


下一篇:数据库管理与高可用第四章备份与恢复