Permutation Sequence
原理:一个permutation是n位,在第i位的值取决于有多少个i-1位的组合。这i-1位的组合是在高位pick完之后剩下的数中
细节:
- 不同于decimal,位数是固定的,所以不能用k>0作为循环条件(这样只会选择某几位),而是用for循环。
- 当i=0的时候,要选取最后一个位,但factorial不能再除了i了,所以这里要加corner的判断
class Solution(object):def getPermutation(self, n, k):""":type n: int:type k: int:rtype: str"""fact = 1nums = []res = []for i in range(1, n):fact*=ifor i in range(1, n+1):nums.append(i)k-=1for i in range(n-1, -1, -1):p = k/factk = k-k/fact*factres.append(str(nums[p]))del nums[p]if i!=0: fact/=i#res.append(str(nums[0]))return ''.join(res)