分治案例

    xiaoxiao2021-03-25  73

    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] ]

    思路:先取第一个元素的值,剩下的把第一个元素组合到分组里

    public List<List<Integer>> permute(int[] nums) { if(nums.length ==0) return new ArrayList<>(); List<Integer> inner = new ArrayList<>(); List<List<Integer>> outer = new ArrayList<>(); if(nums.length==1){ inner.add(nums[0]); outer.add(inner); return outer; } else for(int i=0;i<nums.length;i++){ int[] other = new int[nums.length-1]; int k=0; for(int j=0;j<nums.length-1;j++){ if(k==i) k++; other[j]=nums[k]; k++; } List<List<Integer>> t = permute(other); for(List<Integer> t1:t){ t1.add(nums[i]); outer.add(t1); } } return outer; }
    转载请注明原文地址: https://ju.6miu.com/read-39450.html

    最新回复(0)