wordpress 用户接口/北京网站优化推广公司
47. 全排列 II
难度:medium
在(3条消息) LeetCode.40. 组合总和 II_Chamberlain T的博客-CSDN博客、(3条消息) LeetCode.90. 子集 II_Chamberlain T的博客-CSDN博客我们分别详细讲解了组合问题和子集问题如何去重。
那么排列问题其实也是一样的套路。
Java:
class Solution {List<List<Integer>> ans = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {boolean[] used = new boolean[nums.length];Arrays.sort(nums);backtracking(nums, used);return ans;} public void backtracking(int[] nums, boolean[] used) {if (path.size() == nums.length) {ans.add(new ArrayList<>(path));return;}// 如果同⼀树层nums[i - 1]使⽤过则直接跳过for (int i = 0; i < nums.length; i++) {if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false) {continue;}// 如果同⼀树⽀nums[i]没使⽤过开始处理if (used[i] == false) {path.add(nums[i]);used[i] = true;backtracking(nums, used);path.remove(path.size() - 1);used[i] = false;} }}
}