您的位置:首页 > 产品设计 > UI/UE

lintcode-medium-Permutation Sequence

2016-04-04 13:41 627 查看
Given n and k, return the k-th permutation sequence.

Notice

n will be between 1 and 9 inclusive.

Example

For
n = 3
, all permutations are listed as follows:

"123"
"132"
"213"
"231"
"312"
"321"

If
k = 4
, the fourth permutation is
"231"


Challenge

O(n*k) in time complexity is easy, can you do it in O(n^2) or less?

class Solution {
/**
* @param n: n
* @param k: the kth permutation
* @return: return the k-th permutation
*/
public String getPermutation(int n, int k) {
if(n <= 0)
return "";

StringBuilder result = new StringBuilder();
ArrayList<Integer> list = new ArrayList<Integer>();

for(int i = 1; i <= n; i++)
list.add(i);

k--;
n--;

while(n >= 0){
int index = k / factor(n);

result.append(list.remove(index));
k -= index * factor(n);
n--;
}

return result.toString();
}

public int factor(int n){
int result = 1;

for(int i = 1; i <= n; i++)
result *= i;

return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: