Leetcode 47. Permutations II

来源:互联网 发布:知乎b站三国演义 编辑:程序博客网 时间:2024/06/08 00:05
public class Solution {    public List<List<Integer>> permuteUnique(int[] nums) {        Arrays.sort(nums);                List<List<Integer>> ret = new ArrayList<>();        List<Integer> curr = new ArrayList<>();        boolean[] isVisited = new boolean[nums.length];                dfs(0, nums, curr, ret, isVisited);        return ret;    }        private static void dfs(int pos, int[] nums, List<Integer> curr, List<List<Integer>> ret, boolean[] isVisited) {        if (curr.size() == nums.length) {            ret.add(new ArrayList<>(curr));        }        for (int i=0; i<nums.length; i++) {            // simialr with duplicate combinations            if (isVisited[i] || (i!=0 && nums[i]==nums[i-1] && !isVisited[i-1])) {                continue;            }            isVisited[i] = true;            curr.add(nums[i]);            dfs(i+1, nums, curr, ret, isVisited);            isVisited[i] = false;            curr.remove(curr.size()-1);        }    }}

0 0
原创粉丝点击