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

leetcode60. Permutation Sequence

2016-07-10 17:34 295 查看
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”

思路:空间二分法(轻拍,我瞎bb的)

将[1,2,3,…n]储存在数组中,下标对应0,1,…n-1

每一个数作为字符串打头,则后面的组合有(n-1)!种

二分法来定位,当定位到a[x](len(a)-1)!<=t

class Solution(object):
def back(self,a,t,s):
if len(a)==1:
return s+str(a[0])
start=0;end=len(a)-1
x=len(a)-1;quad=1
while(x):
quad=quad*x
x=x-1
while(True):
mid=(end-start)/2+start
tmp=mid*quad
if end-start>1:
if tmp<(t-1):
start=mid
elif tmp>(t-1):
end=mid
else:
s=s+str(a[mid])
a.remove(a[mid])
for i in a:
s=s+str(i)
return s
else:
flag=start
tmp=start*quad
if end*quad<=(t-1):
flag=end
tmp=end*quad
s=s+str(a[flag])
a.remove(a[flag])
s=self.back(a,(t)-tmp,s)
return s
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
s=''
a=[i for i in range(1,n+1)]
t=k
s=self.back(a,t,s)
return s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode