0
点赞
收藏
分享

微信扫一扫

leetcode-46. 全排列-不含重复元素的全排列-dfs-swap

杨小羊_ba17 2022-02-27 阅读 57

一、题目

在这里插入图片描述

二、思路

1、不含重复元素的全排列
2、dfs遍历,start用来统计当前多少个元素
3、核心

swap(nums[start],nums[i]);
dfs(nums,size,start+1);
swap(nums[start],nums[i]);

三、代码

class Solution {
public:
    vector<vector<int>>res;   
    vector<vector<int>> permute(vector<int>& nums) {
        if(nums.empty()){
            return res;
        }
        int size=nums.size();
        dfs(nums,size,0);
        return res;
    }

    void dfs(vector<int>& nums,int &size,int start){
        if(start==size){
            res.emplace_back(nums);
            return;
        }
        for(int i=start;i<size;++i){
            //交换nums[start]和nums[i]
            swap(nums[start],nums[i]);
            dfs(nums,size,start+1);
            swap(nums[start],nums[i]);
        }
    }
};
举报

相关推荐

0 条评论