> 财经
数字排列组合公式(数字排列顺序的方法)
在生活中,很多人可能想了解和弄清楚数字排列-的相关问题?那么关于数字排列组合公式的答案我来给大家详细解答下。
数字排列
输入一组数字(可能包含重复数字),输出其所有的排列方式。
样例输入:[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); } }}}
温馨提示:通过以上关于数字排列-内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。