可以用数学的方法来解, 因为数字都是从1开始的连续自然数, 排列出现的次序可以推算出来, 对于n=4, k=15 找到k=15排列的过程:1 + 对2,3,4的全排列 (3!个)         2 + 对1,3,4的全排列 (3!个)         3, 1 + 对2,4的全排列(2!个)3 + 对1,2,4的全排列 (3!个)-------> 3, 2 + 对1,4的全排列(2!个)-------> 3, 2, 1 + 对4的全排列(1!个)-------> 32144 + 对1,2,3的全排列 (3!个)         3, 4 + 对1,2的全排列(2!个)         3, 2, 4 + 对1的全排列(1!个)确定第一位:k = 14(从0开始计数)index = k / (n-1)! = 2, 说明第15个数的第一位是3 更新kk = k - index*(n-1)! = 2确定第二位:k = 2index = k / (n-2)! = 1, 说明第15个数的第二位是2更新kk = k - index*(n-2)! = 0确定第三位:k = 0index = k / (n-3)! = 0, 说明第15个数的第三位是1更新kk = k - index*(n-3)! = 0确定第四位:k = 0index = k / (n-4)! = 0, 说明第15个数的第四位是4最终确定n=4时第15个数为3214
class Solution {
public:int calFactorial(int n){  int ans = 1;  for(int i = 1; i <= n; i++)  ans *= i;            return ans;  }  string getPermutation(int n, int k) {  string res;  int num = k;  string s;  int factorial = calFactorial(n);  for(int i = 0; i < n; i++)s += '1' + i;for(int i = n; i > 0; i--){  factorial /= i;  int index = (num-1) / factorial;   res += s[index];  num -= index * factorial;  s.erase(index,1);}  return res;  }
};

 

转载于:https://www.cnblogs.com/-xinxin/p/10624061.html

LeetCode 中级 - 第k个排列(60)相关推荐

  1. Leetcode算法Java全解答--60. 第k个排列

    Leetcode算法Java全解答–60. 第k个排列 文章目录 Leetcode算法Java全解答--60. 第k个排列 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 ...

  2. LeetCode 60. 第k个排列(回溯 康托展开)

    文章目录 1. 题目 2. 解题 2.1 回溯 2.2 数学-康托展开 1. 题目 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = ...

  3. LeetCode —— 60. 第k个排列(Python3)

    给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132&qu ...

  4. LeetCode 60. 第k个排列(python、c++)

    题目描述 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "1 ...

  5. leetcode60.第k个排列java题解

    LeetCode 60.第k个排列 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: 1. "1 ...

  6. [分治] leetcode 23 合并K个升序链表

    [分治] leetcode 23 合并K个升序链表 1.题目 题目链接 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例1: 输入:lists ...

  7. [Swift]LeetCode60. 第k个排列 | Permutation Sequence

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  8. LeetCode 例题精讲 | 08 排列组合问题:回溯法的候选集合

    点击关注上方"五分钟学算法", 设为"置顶或星标",第一时间送达干货. 转自面向大象编程 本期例题:LeetCode 46 - Permutations[1]( ...

  9. ⭐算法入门⭐《二分枚举》中等03 —— LeetCode 1539. 第 k 个缺失的正整数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给你一个 严格升序排列 ...

最新文章

  1. 端口偷窃(Port Stealing)技术
  2. python北京理工大学推荐的书-Python教程书籍(北理工第2版)思考练习-第三章
  3. 创新创业计划书_创践——大学生创新创业实务 ——如何撰写一份优秀的商业计划书...
  4. zabbix中mysql连不上的排错_zabbix 安装及简单排错
  5. 用pycharm做手机软件_从零开始学python:初学者用哪种工具好?南大博士选择用pycharm...
  6. 用遗传算法求3维函数 的最小值_遗传算法可视化项目(4):遗传算法
  7. crontab 不能执行git命令问题备忘
  8. 在vb中实现真正锁定的带自定义菜单的文本控件
  9. 四年级计算机上册课程标准,新课程标准人教版四年级上册数学全册教案设计
  10. QT下以ADO连接ORACLE数据库
  11. 四、六级考试的标准分计算方法-“710分转换表”
  12. ajax网页没有办法采集,Ajax网页采集方法(最新) - 八爪鱼采集器
  13. 游建慧:大山铺镇侧卧恐龙身畔的烟火人间骇伦
  14. 华为使用计算机投屏要打开什么,华为Mate20手机怎么投屏到电脑上呢
  15. Python 爬取懂车帝详情页“全部车型模块信息”!懂车帝就火起来了吗?
  16. OSChina 周六乱弹 —— 广州爱情故事
  17. C语言学习笔记1——零散基础知识
  18. Android Vibrator(震动服务)
  19. asterisk安装、配置
  20. Wine零知识学习1 —— 介绍

热门文章

  1. VC++6.0 按F1无法打开 MSDN 的解决办法
  2. 问题跟踪软件URTracker和Windows域的集成
  3. 【实习之T100开发】T100 双档程序开发流程
  4. SpringBoot 集成 Jsp、Thymeleaf 模板引擎 + Thymeleaf 基本使用
  5. 通过德雷福斯模型探寻成长之路
  6. Python爬取千条相亲数据,看看单身率90%的中国男女都在挑剔什么
  7. 财务报表越做越丑?这些秒杀Excel的可视化工具,人人都能用
  8. linux编译lnx文件命令_Linux命令总结
  9. spring中怎么访问MySQL过程_DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量...
  10. java基础反射知识总结_非常好的Java基础反射总结