题目描述
The set[1,2,3,…,n]contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
- "123"
- "132"
- "213"
- "231"
- "312"
- "321"
Given n and k, return the k th permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
方法一:对数组求全排列,用ArrayList<String> array存放结果,返回array.get(k-1)即可,但是超时。
import java.util.*;
public class Solution {
public String getPermutation(int n, int k) {
if(n<1 || k<0)
return "";
ArrayList<String> array=new ArrayList();
int[] nums=new int[n];
for(int i=0;i<nums.length;i++)
{
nums[i]=i+1;
}
perm(nums,0,array);
return array.get(k-1);//array中的k-1索引存放第k个序列!!
}
public void perm(int[] nums,int index, ArrayList<String> array)
{
if(index == nums.length)
{
StringBuilder sb=new StringBuilder();
for(int i=0;i<nums.length;i++)
{
sb.append(nums[i]);
}
array.add(sb.toString());
return;
}
for(int i=index;i<nums.length;i++)
{
swap(nums,i,index);
perm(nums,index+1,array);
swap(nums,i,index);
}
}
public void swap(int[] nums,int i,int index)
{
int temp=nums[i];
nums[i]=nums[index];
nums[index]=temp;
}
}
方法二:数学排列找规律