階乘問題

Paste_Image.png
class Solution(object):
    """
    :type n: int
    :type k: int
    :rtype: str
    """
    def getPermutation(self, n, k):
        jc = [1]#存放階乘的數(shù)組
        num = [] #存放序列1,2,3,4
        for i in range(2,n):
            jc.append(jc[-1]*i)
        for i in range(n):
            num.append(i+1)
        result = "" #返回的字符串

        #循環(huán)判斷第i個值的位置
        for i in range(n-1):
            if k == 0 or k == 1:
                break
            #當(dāng)前所在區(qū)間
            s = int(k/jc[n-i-2])
            if k%jc[n-i-2] > 0:
                s+=1
            #m放在第一個位置的下標(biāo)
            m = s - 1
            #新k,
            k -= jc[n-i-2] * (s-1)
            #調(diào)整位置
            temp = num[m+i]
            while m > 0:
                num[m+i] = num[m+i-1]
                m -= 1
            num[i] = temp
        result = ""
        for i in range(len(num)):
            result += str(num[i])
        return result
s = Solution()
s.getPermutation(3,6)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容