Description
Given a collection of distinct integers, return all possible permutations.
Example:
Input:
[1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
分析
题目的意思是:返回给定数组的全排列。
- 深度优先搜索,用交换和递归就行了。
C++代码
class Solution {
private:
vector<vector<int>> result;
public:
vector<vector<int>> permute(vector<int>& nums) {
DFS(nums,0);
return result;
}
void DFS(vector<int>& nums,int index){
if(index==nums.size()){
result.push_back(nums);
}
for(int i=index;i<nums.size();i++){
swap(nums[index],nums[i]);
DFS(nums,index+1);
swap(nums[index],nums[i]);
}
}
};
Python代码
class Solution:
def solve(self,nums,start,results):
if(start==len(nums)):
results.append([item for item in nums])
for i in range(start,len(nums)):
nums[i],nums[start]=nums[start],nums[i]
self.solve(nums,start+1,results)
nums[i],nums[start]=nums[start],nums[i]
def permute(self, nums: List[int]) -> List[List[int]]:
results=[]
self.solve(nums,0,results)
return results