马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2019-9-22 20:39 编辑
今天的题目:
给出列表 [1,2,3,…,n],其所有元素共有 n! 种排列。(n! 是什么?请见 https://baike.baidu.com/item/%E9%98%B6%E4%B9%98/4437932?fromtitle=n%21&fromid=7806135)
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
1. "123"
2. "132"
3. "213"
4. "231"
5. "312"
6. "321"
给定 n 和 k,返回第 k 个排列。
说明:
给定 n 的范围是 [1, 9]。
提示:itertools。
示例 1:
输入: n = 3, k = 3
输出: "213" 示例 2:
输入: n = 4, k = 9
输出: "2314"
 欢迎大家一起答题! 
解法 1:
- import math
- def getPermutation(n, k):
- digit = [i for i in range(1, n + 1)]
- res = ""
- while n > 0:
- tmp = math.factorial(n - 1)
- idx = (k - 1) / tmp
- k -= idx * tmp
- res += str(digit[idx])
- digit.pop(idx)
- n -= 1
- return res
复制代码 |