LeetCode 46 Permutations
2017-07-01 12:02
573 查看
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
全排列,注意可以有重复的,比如:
input:112
output:
[[1,1,2],[1,2,1],[1,1,2],[1,2,1],[2,1,1],[2,1,1]]
那么可以用简单的回溯法了。不需要剪枝。
For example,
[1,2,3] have the following permutations:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
全排列,注意可以有重复的,比如:
input:112
output:
[[1,1,2],[1,2,1],[1,1,2],[1,2,1],[2,1,1],[2,1,1]]
那么可以用简单的回溯法了。不需要剪枝。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public static List<list <Integer>> permute(int[] nums) { List<integer> list = new ArrayList</integer><integer>(nums.length); List<list <Integer>> result = new ArrayList<>((int) Math.pow(2, nums.length) - 1); boolean[] visited = new boolean[nums.length]; if (nums.length == 0) { result.add(new ArrayList<integer>()); return result; } search(nums, visited, nums.length, list, result); return result; } public static void search(int[] nums, boolean[] visited, int cur, List</integer><integer> add, List<list <Integer>> list) { if (cur == 0) { list.add(new ArrayList<>(add)); return; } for (int i = 0; i < nums.length; i++) { if (!visited[i]) { add.add(nums[i]); visited[i] = true; search(nums, visited, cur - 1, add, list); visited[i] = false; add.remove(add.size() - 1); } } } |
相关文章推荐
- LeetCode 46: Permutations
- LeetCode_46 Permutations
- LeetCode 46 Permutations
- LeetCode46:Permutations
- Leetcode 46 Permutations
- LeetCode 46:Permutations
- leetcode-46-permutations 搜索
- Leetcode-46: Permutations
- LeetCode46 Permutations
- Leetcode 46 Permutations
- LeetCode_OJ【46】Permutations
- LeetCode- 46/47. Permutations/Permutations || (JAVA) (全排列1,2)
- LeetCode-46 Permutations(全排列)
- 【LEETCODE】46-Permutations
- Leetcode 46 Permutations
- leetcode[46]Permutations
- LeetCode-46-Permutations 暴力递归
- LeetCode 46 Permutations
- leetcode——46——Permutations
- [leetcode 46] Permutations------数组中元素的所有排列组合集合