目录

题目描述:

给定一个没有重复数字的序列,返回其所有可能的全排列。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

示例:

输入: [1,2,3]
输出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

解法:

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>> res;
        int sz = nums.size();
        if(sz == 0){
            return res;
        }else if(sz == 1){
            return {nums};
        }else{
            for(int i = sz-1; i >= 0; i--){
                vector<int> tmp(nums.begin(), nums.begin() + i);
                tmp.insert(tmp.end(), nums.begin() + i+1, nums.end());
                vector<vector<int>> lst = permute(tmp);
                int len = lst.size();
                for(int j = 0; j < len; j++){
                    vector<int> _lst = lst[j];
                    _lst.push_back(nums[i]);
                    res.push_back(_lst);
                }
            }
            return res;
        }
    }
};
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄