题目描述
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
题解:
public class L46 { public static List<List<Integer>> permute(int[] nums) { List<Integer> list = new ArrayList<>(); for(int index =0;index<nums.length;index++){ list.add(nums[index]); } List<List<Integer>> resList = new ArrayList<>(); List<Integer> res = new ArrayList<>(); backList(list,resList,res,nums.length); return resList; } public static void backList(List<Integer> list, List<List<Integer>> resList, List<Integer> res, Integer in){ if(res.size() == in){ resList.add(new ArrayList<>(res)); return; } for(Integer li : list){ res.add(li); //相当于状态重置的作用。或者使用一个列表用来表示哪些数据已经使用 List temp = new ArrayList<>(list); temp.remove(li); backList(temp,resList,res,in); temp = null; res.remove(li); } } public static void main(String[] args) { int nums[]={1,3,5}; List<List<Integer>> list = permute(nums); } }