http://www.lintcode.com/zh-cn/problem/permutation-sequence/#

原题

给定 n 和 k,求123..n组成的排列中的第 k 个排列。

注意事项

1 ≤ n ≤ 9

样例

对于 n = 3, 所有的排列如下:

123
132
213
231
312
321

如果 k = 4, 第4个排列为,231.

解题思路

使用递归得到全排列的所有解,接着从这些解中找到第K个

代码实现

# 递归的方法,创建一个visit判断此值是否已经添加过,每一层不断地循环,加入没有被访问的元素,直到最后结果的长度满足要求加入答案中
class Solution:
"""
@param n: n
@param k: the k-th permutation
@return: a string, the k-th permutation
""" def getPermutation(self, n, k):
nums = [x for x in range(1, n + 1)]
visit = [0 for i in range(n)]
self.ret = []
self._permute(nums, visit, 0, [])
# 因为结果要返回字符串类型,所以对数字类型进行处理
ans = [str(j) for j in self.ret[k-1]]
return "".join(ans) def _permute(self, nums, visit, count, ret):
if count == len(nums):
self.ret.append(ret)
return
for i in range(len(nums)):
if visit[i] == 0:
# ret += [nums[i]] 容易出错,如果加入这句后面需要还原,不然影响后面的循环
visit[i] = 1
self._permute(nums, visit, count + 1, ret + [nums[i]])
visit[i] = 0

  

最新文章

  1. 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token
  2. Redis实战阅读笔记——第一章
  3. javascript类型系统——正则表达式RegExp类型
  4. thinkphp安装 版本 3.1.3
  5. lightetreeview
  6. 少睡与吸烟影响IQ
  7. Android中LayoutParams
  8. C语言的代码内存布局
  9. 用CSS截断字符串
  10. maven编译时错误:无效的目标发行版
  11. Hadoop介绍和环境配置
  12. 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
  13. notepad++取消语法检测
  14. webpack--配置output
  15. node学习第一天:nvm使用
  16. Python之模块导入
  17. int 4 bytes
  18. ABP学习入门系列(二)(abp的数据迁移)
  19. loj2541【PKUWC2018】猎人杀
  20. spring 配置文件中使用properties文件 配置

热门文章

  1. 2761: [JLOI2011]不重复数字(哈希表)
  2. 关于EasyUI 1.5版Datagrid组件在空数据时无法显示"空记录"提示的BUG解决方法
  3. HBase架构
  4. Docker 使用指南 (四)—— 数据卷的使用
  5. curl javaSSm框架中传入json数组的格式方法
  6. django进阶-3
  7. 用PHPExcel类读取excel文件的内容
  8. java学习笔记----数据类型,变量,常量
  9. 老李推荐:第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览
  10. Mac 自定义sublime在浏览器中打开的快捷键/win系统理论通用