力扣算法题—060第K个排列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
"123""132""213""231""312""321"
给定 n 和 k,返回第 k 个排列。
说明:
- 给定 n 的范围是 [1, 9]。
- 给定 k 的范围是[1, n!]。
示例 1:
输入: n = 3, k = 3
输出: "213"
示例 2:
输入: n = 4, k = 9
输出: "2314"
#include "_000库函数.h" //一打眼看到题目描述,就想起用排列算法
//时间有点长588ms class Solution {
public:
string getPermutation(int n, int k) {
vector<int>v;
for (int i = ; i <= n; ++i)
v.push_back(i);
--k;
while (next_permutation(v.begin(), v.end()) && --k);
string s = "";
for (auto a : v)
s += a + '';
return s;
}
}; //用一下递归
class Solution {
public:
string getPermutation(int n, int k) {
vector<int>v;
for (int i = ; i <= n; ++i)
v.push_back(i);
Combin(v, , );
string s = "";
for (auto a : v)
s += a + '';
return s;
}
void Combin(vector<int>&v, int k, int s) {
if (!k)return;
if (s >= v.size())--k;
for (int i = s; i < v.size(); ++i) {
swap(v[i], v[s]);
Combin(v, k, s + );
swap(v[i], v[s]);
}
}
}; //博客答案,没怎么看懂
//后期看懂再更新
//12ms
class Solution {
public:
string getPermutation(int n, int k) {
string res;
string num = "";
vector<int> f(n, );
for (int i = ; i < n; ++i) f[i] = f[i - ] * i;
--k;
for (int i = n; i >= ; --i) {
int j = k / f[i - ];
k %= f[i - ];
res.push_back(num[j]);
num.erase(j, );
}
return res;
}
}; void T060() {
Solution s;
cout << s.getPermutation(, ) << endl;
cout << s.getPermutation(, ) << endl;
}
力扣算法题—060第K个排列的更多相关文章
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- 力扣算法题—093复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135", ...
- 力扣算法题—051N皇后问题
#include "000库函数.h" //使用回溯法来计算 //经典解法为回溯递归,一层一层的向下扫描,需要用到一个pos数组, //其中pos[i]表示第i行皇后的位置,初始化 ...
- 力扣算法题—050计算pow(x, n)
#include "000库函数.h" //使用折半算法 牛逼算法 class Solution { public: double myPow(double x, int n) { ...
- 力扣算法题—147Insertion_Sort_List
Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...
- 力扣算法题—149Max Points on a line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- 力扣算法题—146LRU缓存机制
[题目] 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 (k ...
- 力扣算法题—079单词搜索【DFS】
给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被重复使用. ...
- 力扣算法题—052N皇后问题2
跟前面的N皇后问题没区别,还更简单 #include "000库函数.h" //使用回溯法 class Solution { public: int totalNQueens(in ...
随机推荐
- [翻译]一个新式的基于文本的浏览器 Browsh
介绍 什么是Browsh? Browsh是一个纯文本浏览器,可以运行在大多数的TTY终端环境和任何浏览器.目前1 ,终端客户端比浏览器客户端更先进2. TTY 客户端 终端客户端即时更新和交付,以便于 ...
- .net core Identity集成IdentityServer(3) 一键登出
在客户端程序, 我们补充一键登出操作. 使用了idsv之后, 退出的操作需要删除本地cookie, 然后去请求认证服务器, 也删除认证服务器的cookie. 官网给的退出的代码 public asyn ...
- [日常] HTTP的媒体类型
HTTP的媒体类型 1.MIME类型的数据格式标签(MultIpurpose Internet Mail Extension) 2.最初用于电子邮件系统之间搬移,多用途互联网邮件扩展 3.MIME类型 ...
- mybatis_09关联查询_一对一
复杂查询时,单表对应的po类已不能满足输出结果集的映射. 所以有些时候就需要关联查询_一对一:通过条件查询结果每个字段都唯一 一对一:模型里面有模型 一对多:模型里面有集合 多对多:集合里面有集合 方 ...
- 【Java每日一题】20170317
20170316问题解析请点击今日问题下方的“[Java每日一题]20170317”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...
- 【Java每日一题】20170210
20170209问题解析请点击今日问题下方的“[Java每日一题]20170210”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...
- Eclipse中SVN插件的安装和配置(离线安装)
Eclipse利用svn的离线安装包进行配置svn,这种方式配置起来很简单,但是前提是必须下载可用的的svn离线包.因为有的从网上下载的svn离线包有问题. 第一步:下载svn离线包 我下载的是下面这 ...
- PHP按符号截取字符串的指定部分
字符串截取在php开发中是比较常用的:而且对于截取的需求也有很多种:就比如说对url链接的操作:http://baijunyao.com/article/12 有时我们想截取最后一个斜杠'/'后面的数 ...
- es6 语法 (正则扩展)
{ //es5中 let regex = new RegExp('xyz', 'i'); let regex2 = new RegExp(/xyz/i); console.log(regex.test ...
- 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案
在函数内部,有两个特殊的对象:arguments 和 this.其中, arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 a ...