LeetCode 60. Permutation Sequence
Posted dacc123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 60. Permutation Sequence相关的知识,希望对你有一定的参考价值。
这道题目,用康托展开,时间和空间都碾压了100%的c++.
康拓展开其实就是表示一个连续序列,其实也不用连续,给定一个序列,可以很快速的按照字典序,列出所有序列。给出特定序列,快速告诉你它是按照字典序排序是第几个,给出排名,快速输出序列
https://www.cnblogs.com/dacc123/p/8228762.html
c++
class Solution
public:
int fact[15];
string getPermutation(int n, int k)
fact[0]=1;
for(int i=1;i<=n;i++)
fact[i]=fact[i-1]*i;
string s="";
int vis[15];
k--;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
int x = k / fact[n-i-1];
int j;
for( j=1;j<=n;j++)
if(vis[j]==0)
if(x==0) break;
x--;
s+=(j+'0');
vis[j]=1;
k%=fact[n-i-1];
return s;
;
以上是关于LeetCode 60. Permutation Sequence的主要内容,如果未能解决你的问题,请参考以下文章
#Leetcode# 60. Permutation Sequence
一天一道LeetCode#60. Permutation Sequence.
Leetcode60 Permutation Sequence
Leetcode 60. Permutation Sequence