leetcode hot100刷题日记——16.全排列
解答:
详解见大佬link
此图理解了可以更好明白回溯的算法该怎么写
class Solution {
public:void backtrack(vector<vector<int>>&res,vector<int>&nums,int pos,int size){//所有数填完if(pos==size){res.emplace_back(nums);return;}for(int i=pos;i<size;i++){swap(nums[i],nums[pos]);backtrack(res,nums,pos+1,size);swap(nums[i],nums[pos]);}}vector<vector<int>> permute(vector<int>&nums){vector<vector<int>>res;int n=nums.size();backtrack(res,nums,0,n);return res;}};
时间复杂度:O(n! × n)
空间复杂度:O(n! × n)