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 = 1 nums = [] res = [] for i in range(1, n): fact*=i for i in range(1, n+1): nums.append(i) k-=1 for i in range(n-1, -1, -1): p = k/fact k = k-k/fact*fact res.append(str(nums[p])) del nums[p] if i!=0: fact/=i #res.append(str(nums[0])) return ''.join(res)