可以用回溯+剪枝的方法,看这里:
https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/
或者用数学方法——康托展开:https://baike.baidu.com/item/%E5%BA%B7%E6%89%98%E5%B1%95%E5%BC%80/7968428
写成代码可能类似这样:
https://www.cnblogs.com/ariel-dreamland/p/9149577.html
——————————————以下为博主的青涩思考~~———————————————
例如,对于这样一些数:[1, 2, 3, 4, 5, 6, 7]
,如何确定它的第k个排列(按字典序)?
假设k = 2 * 4! + 3 * 3! + 2
,考虑下面的一些排列:
形如[1, 2, 3, 4, 5, 6, *]
的排列是最小的1!
个排列;
形如[1, 2, 3, 4, 5, *, *]
的排列是最小的2!
个排列;
形如[1, 2, 3, 4, *, *, *]
的排列是最小的3!
个排列;
形如[1, 2, 3, *, *, *, *]
的排列是最小的4!
个排列;
形如[1, 2, *, *, *, *, *]
的排列是最小的5!
个排列;
……
我们的