您当前的位置: 首页 > 

对方正在debug

暂无认证

  • 5浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

全排列I/II

对方正在debug 发布时间:2020-02-16 21:36:37 ,浏览量:5

题目:https://leetcode-cn.com/problems/permutations/ 题目2:https://leetcode-cn.com/problems/permutations-ii/

全排列
class Solution {
public:
    void dfs(int id) {
        if(id == n) {
            ans.push_back(res);
            return;
        }
        for(int i = id;i res = nums;
        n = nums.size();
        dfs(0);
        return ans;
    }
private:
    vector ans;
    vector res;
    int n;
};
全排列II

在全排列I基础上,比较耗空间

class Solution {
public:
    /*
    *给定一个可包含重复数字的序列,返回所有不重复的全排列。
    */
    void dfs(int id) {
        if(id == n) {
            ans.push_back(res);
            return;
        }
        unordered_map vis;
        for(int i = id;i res = nums;
        dfs(0);
        return ans;
    }
private:
    vector ans;
    vector res;
    int n;
};

解法2,减少空间开销,耗时间

class Solution {
public:
    /*
    *给定一个可包含重复数字的序列,返回所有不重复的全排列。
    */
    void dfs(int id) {
        if(id == n) {
            ans.push_back(res);
            return;
        }
        for(int i = 0;i  0 && nums[i] == nums[i-1] && !vis[i-1]) //防重复 
				continue;
            vis[i] = true;
            res.push_back(nums[i]);
            dfs(id+1);
            res.pop_back();
            vis[i] = false;
        }
    }
    vector permuteUnique(vector& nums) {
        n = nums.size();
        sort(nums.begin(),nums.end());
        this->nums = nums;
        vis.clear();
        dfs(0);
        return ans;
    }
private:
    vector ans;
    vector res,nums;
    int n;
    unordered_map vis;
};
关注
打赏
1664895754
查看更多评论
立即登录/注册

微信扫码登录

0.0397s