lintcode-medium-Permutation Sequence
Posted 哥布林工程师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode-medium-Permutation Sequence相关的知识,希望对你有一定的参考价值。
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; } }
以上是关于lintcode-medium-Permutation Sequence的主要内容,如果未能解决你的问题,请参考以下文章