leetcode刷题之旅(46)全排列

题目描述

给定一个没有重复数字的序列,返回其所有可能的全排列。

 

样例

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

 

思路分析

典型的回溯法,注意剪枝

 

代码及结果

public List> permute(int[] nums) {
		List> list = new ArrayList>();
		List list1 = new ArrayList();
		dfs(list, list1, nums);
		return list;
	}
void dfs(List> list, List list1, int[] nums){
		if (list1.size() == nums.length) {
			list.add(new ArrayList(list1));
		}
		else {
			for (int i = 0; i < nums.length; i++) {
				if (list1.contains(nums[i])) {
					continue;
				}
				list1.add(nums[i]);
				dfs(list, list1, nums);
				list1.remove(list1.size() - 1);
			}
		}
	}

leetcode刷题之旅(46)全排列_第1张图片

你可能感兴趣的:(刷题之LeetCode)