华为OD机试C卷-- 第k个排列(Java & JS & Python)

05-28 1037阅读

获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。

华为OD机试C卷-- 第k个排列(Java & JS & Python)
(图片来源网络,侵删)

题目描述
给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!种排列。

按大小顺序升序列出所有排列的情况,并一一标记,

当n=3时,所有排列如下:

“123” “132” “213” “231” “312” “321”

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

输入描述
输入两行,第一行为n,第二行为k,

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

输出描述
输出排在第k位置的数字。

题目解析
这个问题要求根据给定的整数n和k,找到n个整数1到n的全排列中第k个排列是什么。全排列有n!种,因此k的范围是1到n!。解决这个问题的一个有效方法是通过递归的方式,从高位到低位确定每一位的数字,逐步减小排列的数目,直到确定完整的排列。

java算法源码

import java.math.BigInteger
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]