本文主要是介绍leetcode46:全排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
全排列
给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
List<List<Integer>> list = new ArrayList<>();public List<List<Integer>> permute(int[] nums) {LinkedList<Integer> res = new LinkedList<>();for (int i = 0; i < nums.length; i++) {res.add(nums[i]);}backTrack(nums,0,res);return list;}void backTrack(int nums[], int start, LinkedList<Integer> res){if(start == nums.length){list.add(new ArrayList<>(res));return;}for (int i = start; i < nums.length; i++) {swap(res,start,i);backTrack(nums,start+1,res);swap(res,start,i);}}private void swap(LinkedList<Integer> res, int start, int i) {int a = res.get(start);res.set(start,res.get(i));res.set(i,a);}
回溯
这篇关于leetcode46:全排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!