leetcode46无重复字符串的全排列

参考资料:

[1] leetcode46无重复字符串的全排列

注意的问题:

思路:
第一个数和其他数进行相交换,然后对剩余的其他数做一下全排列。然后将第一个数和其他数相交换回来,为下次做准备。

什么时候输出结果呢?
当begin==end时,可进行保存和输出。

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        
        vector<vector<int> > result;
        
        int nLen=nums.size();
        
        permuteCore(nums,result,0,nLen-1);
        
        return result;
    }
    
    
    void permuteCore(vector<int>& nums,vector<vector<int> >& result,int begin,int end)
    {
        if(begin==end)
            result.push_back(nums);
        else
        {
            for(int i=begin;i<=end;i++)
            {
                swap(nums[begin],nums[i]);
                permuteCore(nums,result,begin+1,end);
                swap(nums[begin],nums[i]);
            }
        }
        
        
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容