代码问题

来源:8-3 排列问题 Permutations

宝慕林2471919

2019-05-10

class Solution {

private:
vector<vector> res;
vector s;
vector visited;

void generatecombination(vector<int>& nums,vector<int> s)
{
    
    if(s.size()==nums.size())
    {res.push_back(s);
     return;
    } 
    
    for(int i=0;i<nums.size();i++)
    {
        if(!visited[i])
        {
            s.push_back(nums[i]);
            visited[i]=true;
            generatecombination(nums,s);
  
            s.pop_back();
            visited[i]=false;
        }
     }   
    return;
}

public:
vector<vector> permute(vector& nums) {

    res.clear();

    if(nums.size()==0)
        return res;
    
      visited= vector<bool>(nums.size(),false);
    
    generatecombination(nums,s);
    return res;
    
    
}

};

我不用那个index,只靠visited不是也能循环吗?我觉得逻辑没错啊,但是在leetcode上一直运行,不停止了。。。。。。

写回答

1回答

liuyubobobo

2019-05-11

你的代码我试了一下,vector标清楚类型,是可以通过的。

class Solution {
private:
    vector<vector<int>> res;
    vector<int> s;
    vector<bool> visited;
    void generatecombination(vector<int>& nums,vector<int> s)
    {
        if(s.size()==nums.size())
        {res.push_back(s);
            return;
        }
        for(int i=0;i<nums.size();i++)
        {
            if(!visited[i])
            {
                s.push_back(nums[i]);
                visited[i]=true;
                generatecombination(nums,s);
                s.pop_back();
                visited[i]=false;
            }
        }
        return;
    }
public:
    vector<vector<int>> permute(vector<int>& nums) {
        res.clear();
        if(nums.size()==0)
            return res;
        visited= vector<bool>(nums.size(),false);
        generatecombination(nums,s);
        return res;
    }
};


0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程