LinkCode 第k个排列
2024-08-24 16:09:42
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
最新文章
- 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token
- Redis实战阅读笔记——第一章
- javascript类型系统——正则表达式RegExp类型
- thinkphp安装 版本 3.1.3
- lightetreeview
- 少睡与吸烟影响IQ
- Android中LayoutParams
- C语言的代码内存布局
- 用CSS截断字符串
- maven编译时错误:无效的目标发行版
- Hadoop介绍和环境配置
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
- notepad++取消语法检测
- webpack--配置output
- node学习第一天:nvm使用
- Python之模块导入
- int 4 bytes
- ABP学习入门系列(二)(abp的数据迁移)
- loj2541【PKUWC2018】猎人杀
- spring 配置文件中使用properties文件 配置
热门文章
- 2761: [JLOI2011]不重复数字(哈希表)
- 关于EasyUI 1.5版Datagrid组件在空数据时无法显示";空记录";提示的BUG解决方法
- HBase架构
- Docker 使用指南 (四)—— 数据卷的使用
- curl javaSSm框架中传入json数组的格式方法
- django进阶-3
- 用PHPExcel类读取excel文件的内容
- java学习笔记----数据类型,变量,常量
- 老李推荐:第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览
- Mac 自定义sublime在浏览器中打开的快捷键/win系统理论通用