1. 程式人生 > >LeetCode2:全排列1

LeetCode2:全排列1

題目

給定一個沒有重複數字的序列,返回其所有可能的全排列。

示例:

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

package 全排列;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Demo1_paixu {
	
	public static void main(String[] args) {
		int[] nums = {1,1,3};
		int[] tempArr = new int[nums.length];
		List<List<Integer>> list = permute(nums);
		for (List<Integer> l : list) {
			System.out.println(l);
		}
	}
	
	public static List<List<Integer>> permute(int[] nums) {
		List<List<Integer>> res = new ArrayList<>();
		backtrack(res, new ArrayList<>(), nums);
		return res;
	}
	
	public static void backtrack(List<List<Integer>> res, List<Integer> tempRes, int[] nums) {
		if (tempRes.size() == nums.length) {
			res.add(new ArrayList<>(tempRes));
		} else {
			for (int i = 0; i < nums.length; i++) {
				if (tempRes.contains(nums[i])) {
					continue;
				}
				tempRes.add(nums[i]);
				backtrack(res, tempRes, nums);
				tempRes.remove(tempRes.size() - 1);
			}
		}
	}
}