搜索
写经验 领红包
 > 财经

数字排列组合公式(数字排列顺序的方法)

在生活中,很多人可能想了解和弄清楚数字排列-的相关问题?那么关于数字排列组合公式的答案我来给大家详细解答下。

数字排列组合公式(数字排列顺序的方法)

数字排列

输入一组数字(可能包含重复数字),输出其所有的排列方式。

样例输入:[1,2,3]输出:      [        [1,2,3],        [1,3,2],        [2,1,3],        [2,3,1],        [3,1,2],        [3,2,1]      ]

回溯

时间复杂度O(n!)

class Solution {public List<List<Integer>> permutation(int[] nums) {    List<List<Integer>> list = new ArrayList<>();    Arrays.sort(nums);    backtrack(list, new ArrayList<>(), nums, new boolean[nums.length]);    return list;}private void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, boolean [] used){    if(tempList.size() == nums.length){        list.add(new ArrayList<>(tempList));    } else{        for(int i = 0; i < nums.length; i++){            if(used[i] || i > 0 && nums[i] == nums[i-1] && !used[i - 1]) continue;            used[i] = true;             tempList.add(nums[i]);            backtrack(list, tempList, nums, used);            used[i] = false;             tempList.remove(tempList.size() - 1);        }    }}}

温馨提示:通过以上关于数字排列-内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。