LeetCode 0046 Permutations
作者:互联网
1. 题目描述
2. Solution
1、思路分析
思路见 Q39,求排列伪码
P(nums, n):
ans = []
PAux(nums, n, [], ans)
return ans
PAux(nums, cur, ans):
if cur.size() == n:
ans.add(cur)
return
for num in nums:
if cur.contains(num):
continue
cur.add(num)
PAux(nums, n, cur, ans)
cur.remove(cur.size() - 1)
2、代码实现
package Q0099.Q0046Permutations;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> ans = new ArrayList<>();
permutationAux(nums, new ArrayList<>(), ans);
return ans;
}
private void permutationAux(int[] nums, List<Integer> cur, List<List<Integer>> ans) {
if (cur.size() == nums.length) {
ans.add(new ArrayList<>(cur));
} else {
for (int num : nums) {
if (cur.contains(num)) continue; // element already exists, skip
cur.add(num);
permutationAux(nums, cur, ans);
cur.remove(cur.size() - 1);
}
}
}
}
3、复杂度分析
标签:cur,nums,Permutations,List,0046,num,ans,LeetCode,size 来源: https://www.cnblogs.com/junstat/p/16070048.html