算法:60.第k个排列
解答参考:https://blog.csdn.net/lqcsp/article/details/23322951
题目链接:https://leetcode-cn.com/problems/permutation-sequence/description/
题目描述:

代码见下:
class Solution {
public:
    string getPermutation(int n, int k) {
        vector<int> num(n, );
      int perm_sum = ;
      for(size_t i = ; i < n; ++i)
      {
        num[i] = i + ;
        perm_sum *= (i + );
      }
      string ret;
      //因为数组是从0到n-1的 所以基数从 0到k-1
      --k;
      for(size_t i = ; i < n; ++i)
      {
        perm_sum = perm_sum / (n - i);
        int selected = k / perm_sum;
        ret.push_back(num[selected] + '');
        //选择一个数后重新构造剩下的数组
        for(size_t j = selected; j < n - i - ; ++j)
          num[j] = num[j + ];
        k = k % perm_sum;
      }
      return ret;
    }
};
算法:60.第k个排列的更多相关文章
- Java实现 LeetCode 60 第k个排列
		
60. 第k个排列 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" &q ...
 - LeetCode 60 第K个排列
		
题目: 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "13 ...
 - LeetCode 60. 第k个排列(Permutation Sequence)
		
题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "1 ...
 - 60第K个排列
		
题目:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列.按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" &quo ...
 - 力扣60——第k个排列
		
原题 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: 1. "123" 2. &qu ...
 - 代码题(45)— 下一个排列、第k个排列
		
1.31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只 ...
 - 力扣算法题—060第K个排列
		
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132&qu ...
 - 排列算法汇总(下一个排列,全排列,第K个排列)
		
一.下一个排列 首先,STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation. next_permutation(nums.begin() ...
 - LeetCode:第K个排列【60】
		
LeetCode:第K个排列[60] 题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: &quo ...
 
随机推荐
- Linux学习杂谈
			
Linux学习相关的... --------- 1.Linux是免费的2.Linux是安全稳定的3.linux是开源的,却世界的工程师都在维护系统--------------------熟悉脚本开发语 ...
 - -bash: /tyrone/jdk/jdk1.8.0_91/bin/java: cannot execute binary file
			
问题描述:今天在linux环境下安装了一下JDK,安装成功后,打算输入java -version去测试一下,结果却出错了. 错误信息:-bash: /tyrone/jdk/jdk1.8.0_91/bi ...
 - spring boot 返回json字符串 null值转空字符串
			
@Configuration public class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.cl ...
 - SpringBoot集成原生redis
			
redis的使用之一是Spring-data-redis,前面有介绍. 本篇介绍原生redis也就是jedis.这个效率更高 1.maven引入依赖 <!--springBoot-->&l ...
 - HDU - 6313 Hack It(构造)
			
http://acm.hdu.edu.cn/showproblem.php?pid=6313 题意 让你构造一个矩阵使得里面不存在四个顶点都为1的矩形,并且矩阵里面1的个数要>=85000 分析 ...
 - MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具
			
MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013 MVC 5 Scaffolder + ...
 - Mcafee(麦咖啡) 无法升级的解决办法(威流验证)
			
McAfee时会遇到更新失败的情况.为了解决这个问题,你需要做如下设置:1.“运行”>“dcomcnfg.exe”2.双击“组件服务>计算机>我的电脑”3.展开“DCOM配置”,打开 ...
 - Java8新特性  并行流与串行流 Fork Join
			
并行流就是把一个内容分成多个数据块,并用不同的线程分 别处理每个数据块的流. Java 8 中将并行进行了优化,我们可以很容易的对数据进行并 行操作. Stream API 可以声明性地通过 para ...
 - c++注意易错点
			
1.cout采用endl,cin不用endl cin>>a>>b; cout<<a<<b<<endl; 2.函数定义后面不要加分号,完了也没 ...
 - 第25月第22日 django channels
			
1. https://github.com/andrewgodwin/channels-examples/ https://channels.readthedocs.io/en/latest/