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