xinyu04

导航

LeetCode 46 Permutations 回溯

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

Solution

我们需要求出一个数组的全排列。那么还是依旧使用回溯,其次利用 \(vis\) 来标记数字是否被访问。

点击查看代码
class Solution {
private:
    vector<vector<int>> ans;
    int vis[10];
    vector<int> cur;
    
    void dfs(vector<vector<int>>& ans, vector<int>& cur, vector<int> nums, int n){
        if(cur.size()==n){ans.push_back(cur);return;}
        for(int i=0;i<n;i++){
            if(vis[i])continue;
            vis[i] = 1; cur.push_back(nums[i]);
            dfs(ans, cur, nums, n);
            cur.pop_back(); vis[i] = 0;
        }
    }
    
public:
    vector<vector<int>> permute(vector<int>& nums) {
        int n = nums.size();
        dfs(ans, cur, nums, n);
        return ans;
    }
};

posted on 2022-07-25 15:47  Blackzxy  阅读(12)  评论(0编辑  收藏  举报