0
点赞
收藏
分享

微信扫一扫

Leetcode 46题 求全排列

夏沐沐 2022-03-11 阅读 68

在这里插入图片描述

class Solution {
public:
    vector<vector<int>> res;//用于存放返回结果
    vector<int> track;//用于存放当前遍历的树
    vector<vector<int>> permute(vector<int>& nums) 
    {
        BackTrack(nums);
        return res;
    }
    void BackTrack(vector<int>& nums)
    {
        //当track的元素与nums元素数量相等的时候说明树已经到底,加入res中
        if(track.size()==nums.size())
        {
            res.push_back(track);
            return;
        }
        for(int i=0;i<nums.size();i++)
        {
            //若当前元素已经在track中被使用了,就不做任何操作
            if(IsIn(nums[i])) continue;
            
            //否则加入track,并且继续往深处遍历
            track.push_back(nums[i]);
            BackTrack(nums);
            track.pop_back();
        }
    }
    bool IsIn(int a)
    {
        for(int i=0;i<track.size();i++)
        {
            if(a==track[i]) return true;
        }
        return false;
    }
};
举报

相关推荐

0 条评论