题目描述
题解
java
java里面不可以在方法里面定义全局变量
import java.util.*;
public class Leetcode_46 {
boolean[] isUsed = new boolean[10000];
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> ret = new ArrayList<>();
if(nums.length==0)
return ret;
ArrayList<Integer> p = new ArrayList<>();
findPermute(nums,0,p,ret);
return ret;
}
private void findPermute(int[] nums, int offset, ArrayList<Integer> p,List<List<Integer>> ret)
{
if(offset>=nums.length)
{
ret.add(new ArrayList<Integer>(p));
return;
}
for(int i = 0; i<nums.length; i++)
{
if(!isUsed[i])
{
isUsed[i] = true;
p.add(nums[i]);
System.out.println(p.toString());
findPermute(nums,offset+1,p,ret);
p.remove(p.size()-1);
isUsed[i] = false;
}
}
}
public static void main(String[] args)
{
Leetcode_46 a = new Leetcode_46();
int[] nums = {1,2,3};
List<List<Integer>> ret = a.permute(nums);
System.out.println(ret.toString());
}
}
c++
class Solution {
private:
vector<vector<int>> res;
vector<bool> used;
void generatePermutation(const vector<int>& nums, int index, vector<int>& p)
{
if(index == nums.size())
{
res.push_back(p);
return;
}
for(int i = 0; i<nums.size();i++)
{
if(!used[i]){
used[i] = true;
p.push_back(nums[i]);
generatePermutation(nums,index+1,p);
p.pop_back();
used[i] = false;
}
}
return;
}
public:
vector<vector<int>> permute(vector<int>& nums) {
res.clear();
if(nums.size()==0)
return res;
used = vector<bool>(nums.size(), false);
vector<int> p;
generatePermutation(nums,0,p);
return res;
}
};