LeetCode 60. 第k个排列

Java实现 LeetCode 60 第k个排列 60. 第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 = ... 阅读详情

题目链接:LeetCode 60. 第k个排列

题意:

  给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。

按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

给定 n 和 k,返回第 k 个排列。

说明:

  • 给定 n 的范围是 [1, 9]。
  • 给定 k 的范围是[1,  n!]。

解题思路:

  解题思路有好几个,但是找规律无疑是耗时最少的,而且占用内存会很小

 就分析案例1,以1开头的数字有2个,2开头的有2个,3开头的有2个,会发现:

  以某个数开头的数字就是剩余后面数字的排列,个数为 (n-1)!    【这玩意代表阶乘,不是单纯的感叹号】

 

接下来判断第k个字符串   中每一位的数字 ,num = k / (n-i)!    ,ch[num]  就是当前位置对应的数字          k =  k % (n-i)!  

 

class Solution {
public:
    string getPermutation(int n, int k) {
    	string ans = "";
    	int f[15];
    	f[0] = 1;
    	vector<char> ch={'1','2','3','4','5','6','7','8','9'};
    	for(int i = 1; i <= n; i++) {
    		f[i] = f[i-1] * i;       // 先求阶乘
    	}
    	k--;  // 先减一,数组从0开始
		for(int i = 0; i < n; i++) {
			int p = k / f[n-i-1];    // 计算字符串k的第i位
			ans.push_back(ch[p]);
			ch.erase(ch.begin()+p);  // 消去这个数字
			k = k % f[n-i-1];        // 计算下一位
		}
		return ans;
    }
};

 

PADS VX2.4 缝合孔(阵列过孔)的添加方法 缝合孔的主要目的是:①:增加底层和顶层的地铜皮的连接性,②:起到屏蔽外界信号干扰的作用。铺完铜后,右击空区域选择“选择形状”命令,选取整板中的一块大铜皮,右击选择“覆铜区域内过孔阵列模式”→“沿周边”指令后,再右击选择“覆铜区域内过孔阵列”,便能看到已选区域内添加的缝合孔(过孔阵列),也可以通过铜皮显示或隐藏的无模命令:PO进行查看。完成上面的“防止错误”和“过孔样式”的设置后,开始对整板进行铺铜处理,点击“工具栏”→覆铜平面指示器,在弹出的对话框点击“开始”,便能观察铺铜后的板子。 阅读详情

相关推荐

头歌OpenGauss数据库 - 单表查询 答案

本关任务:用SELECT语句检索数据表中指定字段的数据;用SELECT语句检索数据表中所有字段的数据。为了完成本关任务,你需要掌握: 1.如何获取数据表中指定字段的数据;2.如何获取数据表中的所有数据。

d214493517的博客 5720

LeetCode 力扣 60. 第k个排列

题目描述(中等难度) 又是一道全排列的题,之前在31题,46题,也讨论过全排列问题的一些解法。这道题的话,是给一个 n,不是输出它的全排列,而是把所有组合从从小到大排列后,输出第 k 个。 解法一 以 n = 4 为例,可以结合下图看一下。因为是从小到大排列,那么最高位一定是从 1 到 4。然后可以看成一组一组的,我们只需要求出组数,就知道最高位是多少了。而每组的个数就是 n - 1 的阶乘,也...

wind_liang的博客 1012

U-Boot 适配新型号 SPI Nor Flash 实战解析

本文详细解析了U-Boot适配新型号SPI Nor Flash的全过程,从JEDEC ID识别错误入手,深入源码分析Flash信息数据库,结合实际手册参数添加新设备支持。重点介绍了设备树同步和验证调试的关键步骤,并总结了常见问题与解决方案,为嵌入式开发者提供实用参考。

weixin_29170327的博客 199

LeetCode60-第k个排列

LeetCode60-第k个排列 给出集合 [1,2,3,…,n][1,2,3,…,n][1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是[1, 9]。 给定 k 的范围是[1...

lyd1995的博客 340

开源ISP介绍(1)——开源ISP的Vivado框架搭建

ZYNQ视频图像处理系统,ISP图像处理硬件实现

路漫漫其修远兮,吾将上下而求索 3286

Excel炒股党必备:手把手教你用Power Query免费获取并刷新股票历史数据

本文详细介绍了如何利用Excel中的Power Query工具免费获取并自动刷新股票历史数据,特别适合Excel炒股党。从环境配置、数据源选择到实战操作,手把手教你建立智能数据管道,实现高效投资分析。通过参数化股票代码和定时刷新功能,大幅提升数据更新效率。

weixin_26767391的博客 654

leetcode 60.第k个排列

leetcode 60.第k个排列 题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 ...

EngineerHe的博客 1794

使用ITK-SNAP软件进行医学图像的标注(label标签设置、调整等)(windows版本,如mac和linux操作则略有不同)

使用ITK-SNAP软件进行医学图像的标注工作:如肿瘤、炎症、出血、梗死等的多类 目标轮廓勾画等。

qianshuqinghan的博客 2万+

leetcode每日一题—60. 第k个排列

60. 第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" 来源:力扣

weixin_42846216的博客 516

科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法

本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。

weixin_29089057的博客 71

Misc-RAR隐写

题目来自于:XCTF的SimpleRAR,由于涉及到许多新知识,所以写篇小文子记录一下。 一、下载完后是一个压缩包。 里面就有一个flag.txt,打开之后发现有一串字符是flag is not here,而且我们查看他的文件大小,只要十六字节,绝对不可能再藏着什么信息了。 然后把压缩包拉到010editor里面,发现一下子出来好多新的内容,很明显是有夹杂着的附加文件。 二、rar文件头信息。 rar 是由一个一个 block 组成的,每个 block 有以下几个部分 ...

admin的博客 1361

LeetCode60 n个数的排列组合找出第k个排列

觉得知道题有必要,我二次回顾,数学。。。。 The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3):

ata_123的专栏 2847

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2277

leetcode原题:第k个排列(60)

解题思路:从头到尾进行数字排列的确定,当前排列数字的序号(0~n-1)应由排列数和剩余排序数字的阶乘共同决定。 题目链接: LeetCode原题目的链接. // LeetCode 60,第k个排列 class Solution { public: string getPermutation(int n, int k) { vector<int> memo=vector<int>(n); vector<int> factorial=ve

qq_41620126的博客 241

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode 60. Permutation Sequence 第k个排列

Leetcode 60. Permutation Sequence 第k个排列 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/permutation-sequence/comments/82926 题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当&nb...

CoderWangSon 257

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

leetcode60(第k个排列:数学递归)

给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定 n 和 k,返回第 k 个排列。 输入: n = 3, k = 3 输出: “213” 题解:从最小的排列开始,逐渐增大排列,找到第k小的排列,我们需要从最后一个数字开始逐渐往前扩大排列数组大小找前n个的升序排列顺序字符串,例:最前的1个排列是升序排列,最前的2个排列是最后两个数字的升序排

CY2333333的博客 334

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode 60. 第k个排列

感谢https://www.bilibili.com/video/av48752371?from=search&seid=4651594381646091640 ''' leetcode 60. 第k个排列 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记 n=4 k=14 为例 [1,2,3,4] 共有4!=24种可...

WYXHAHAHA123的博客 155

leetcode 60 第K个排列-康托展开

leetcode 60 第K个排列 1.题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1: ...

github_39106037的博客 299

力扣60——第k个排列

原题 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: 1. "123" 2. "132" 3. "213" 4. "231" 5. "312" 6. "321" 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1:...

death05的博客 1133

leetcode60.第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 输出:...

Livingdd的博客 288

Leetcode 60. 第k个排列

断断续续地刷了两个月的leetcode,今天终于刷到了70道了,纪念一下,分享一道题。60. 第k个排列 这题以我的思路肯定是直接用递归把所有结果遍历出来啊,事实上,我也是这么做的,但是最后以超时告终。实际上,我在我的递归中用上了正确的思想,只不过不够彻底而已。这题的重点应该是在剪枝上,与寻常的剪枝不同,这题用的不是设置条件,而是通过数学的方法直接剔去没有计算价值的情况,其实在我自己的代码中,我...

lzy我就来随便逛逛的博客 201

Leetcode60. 第k个排列

Leetcode60. 第k个排列 题目: 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1: 输入:...

会流泪de鱼的博客 186

LeetCode-60、第k个排列-中等

LeetCode-60、第k个排列-中等 给出集合[1,2,3,…,n],其所有元素共有n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定n 和k,返回第k个排列。 说明:给定 n的范围是 [1, 9]。给定 k的范围是[1, n!]。 示例1:...

clover_my的博客 142

LeetCode题解(python)-60. 第k个排列

LeetCode题解(python) 60. 第k个排列 题目描述 解题心得 解答本题,第一反应,把所有的排列都列出来,然后取第k个——毫无疑问会超时的。 这时就可以从数学角度来考虑问题了。所有的排列的出现是有规律的,如下: "123" "132" "213" "231" "312" "321" 从第一位开始,1,2,3,第二位,2,3,1,3,1,2(除了第一位之后按照从小到大的顺序出现),...

Marshal Zheng的博客 596

LeetCode 60. 第k个排列 Permutation Sequence(C语言)

题目描述: 给出集合[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...

hang404的博客 976
上一篇: LeetCode 151. 翻转字符串里的单词
下一篇: LeetCode 257. 二叉树的所有路径
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值