1
roker OP 补充 n<10,期望得到的算法时间复杂度 O(n)
|
2
Ljxtt 2022-04-19 02:26:20 +08:00 via Android 2
逆康托展开?
|
3
jony83 2022-04-19 09:26:11 +08:00
自定义一个结构,存有 pass(经过的次数)和 end(以这个数为结尾的)
|
4
jony83 2022-04-19 09:30:13 +08:00
一个结构是一个线,数据的起点是不包含任何数字开头的。是 1 开头的建立以 1 开头的线。是 2 开头的建立 2 开头的线。end 用来判断是否重复了
|
5
jony83 2022-04-19 09:35:40 +08:00
每一个节点有 0 个 9 的分支线。你从头开始遍历每个节点就是了
|
6
MoYi123 2022-04-19 14:31:56 +08:00
def sv(n, rank):
____ans = [] ____tmp = math.factorial(len(n)) ____for i in range(len(n)): ________tmp //= len(n) ________ans.append(n.pop(rank // tmp)) ________rank %= tmp ____return ans sv([0, 1, 2, 3, 4], 11) 就这样写吧, 需要注意一下 int 溢出的问题. n 很大的话数据结构换成 pb_ds. |