[LeetCode]题解(python):060-Permutation Sequence
2015-11-23 13:49
621 查看
[b]题目来源:[/b]
https://leetcode.com/problems/permutation-sequence/
[b]题意分析:[/b]
输入1到9的一个数n。将[1,...,n]排列好。输出这个第k个排列。
[b]题目思路:[/b]
不难发现,以1开头的所有排列的个数一共(n-1)!。所以当k小于(n - 1)!那么开头的数为1.根据这个规律,我们可以得到剩下的数里面第(k - 1) // (n-1)大数是第一个数。其他位数也可以根据这个规律获得。
[b]代码(python):[/b]
View Code
转载请注明出处:http://www.cnblogs.com/chruny/p/4988243.html
https://leetcode.com/problems/permutation-sequence/
[b]题意分析:[/b]
输入1到9的一个数n。将[1,...,n]排列好。输出这个第k个排列。
[b]题目思路:[/b]
不难发现,以1开头的所有排列的个数一共(n-1)!。所以当k小于(n - 1)!那么开头的数为1.根据这个规律,我们可以得到剩下的数里面第(k - 1) // (n-1)大数是第一个数。其他位数也可以根据这个规律获得。
[b]代码(python):[/b]
import math class Solution(object): def getPermutation(self, n, k): """ :type n: int :type k: int :rtype: str """ ans, m = [],n - 1;k -= 1 visit = [False for i in range(n)] while m > 0: fm = math.factorial(m) tmp = k // fm;k %= fm i,t = 0,1 while i <= tmp: if not visit[t - 1]: if i == tmp: visit[t - 1] = True;ans.append(t);break i += 1 t += 1 m -= 1 i = 0 while visit[i]: i += 1 ans.append(i + 1) res = "" for i in ans: res += str(i) return res
View Code
转载请注明出处:http://www.cnblogs.com/chruny/p/4988243.html
相关文章推荐
- [LeetCode]题解(python):059-Spiral Matrix II
- python 里关于字符的处理
- python 开发中易混淆点
- [LeetCode]题解(python):058-Length of Last Word
- python实现爬虫统计学校BBS男女比例(三)数据处理
- python统计小脚本
- 学习python地址
- Python - 操作Excel(上)
- 通过矩阵求两个向量集中元素两两之间的欧氏距离(python实现)
- 使用python来访问Hadoop HDFS存储实现文件的操作
- python django 快速搭建blog
- [python]help 函数
- <LeetCode><Medium> 3 Longest Substring Without Repeating Characters
- Python之删除代码中空白行
- selenium python (一) 开发环境搭建
- python中数组,元组,字典和字符串之间的转换
- python批量打多渠道包
- Python 最佳实践
- python中使用多继承
- 利用Sublimetext3&virtualenv 打造一个Web&Python IDE