题解 | #没有重复项数字的全排列#

没有重复项数字的全排列

https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    void backtracking(vector<int>& num, vector<bool>& used){
        // 如果path的长度跟num的长度相等,说明找到一个排列
        if(num.size() == path.size()){
            res.push_back(path);
            return;
        }
        // 遍历num中的元素
        for(int i = 0; i < num.size(); ++i){
            if(used[i]) continue;   // path里已经收录的元素,直接跳过
            used[i] = true;         // path里没有收录该元素,此时使用该元素,修改used数组对应的值
            path.push_back(num[i]); // 将当前元素加入path中
            backtracking(num, used);    // 递归
            path.pop_back();    // 回溯
            used[i] = false;
        }
    }
    vector<vector<int> > permute(vector<int> &num) {
        vector<bool> used(num.size(), false);   // 创建used数组
        backtracking(num, used);
        return res;
    }
};

来自代码随想录~~~

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务