首页 > 学院 > 开发设计 > 正文

Permutations II

2019-11-06 08:50:37
字体:
来源:转载
供稿:网友

Given a list of numbers with duplicate number in it. Find all unique permutations.

class Solution { /** * @param nums: A list of integers. * @return: A list of unique permutations. */ public List<List<Integer>> permuteUnique(int[] nums) { List<List<Integer>> results = new ArrayList<>(); if (nums == null) { return results; } if (nums.length == 0) { results.add(new ArrayList<Integer>()); return results; } List<Integer> result = new ArrayList<>(); Set<List<Integer>> hash = new HashSet<>(); int[] visited = new int[nums.length]; dfsHelper(nums, visited, results, result, hash); return results; } PRivate void dfsHelper(int[] nums, int[] visited, List<List<Integer>> results, List<Integer> result, Set<List<Integer>> hash) { if (result.size() == nums.length ) { List<Integer> temp = new ArrayList<Integer>(result); if (!hash.contains(temp)) { results.add(temp); hash.add(temp); } } for (int i = 0; i < nums.length; i++) { if (visited[i] == 1) { continue; } result.add(nums[i]); visited[i] = 1; dfsHelper(nums, visited, results, result, hash); result.remove(result.size() - 1); visited[i] = 0; } }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表