LeetCode 3518 最小回文排列 II - Solution
利用康托展开 + 可重集排列计数,在 O(n·26·log n) 内求回文串所有不同排列按字典序排序后的第 k 个,通过剪枝提前判断无解情况。
利用康托展开 + 可重集排列计数,在 O(n·26·log n) 内求回文串所有不同排列按字典序排序后的第 k 个,通过剪枝提前判断无解情况。
介绍康托展开与逆康托展开的原理、公式推导和代码实现,涵盖排列排名计算、第 k 个排列生成,以及配合树状数组优化的 O(n log n) 解法。
康托展开 康托展开用于求 $1 \sim n$ 的排列在所有排列中的字典序排名,用树状数组维护未使用过的数中比当前数小的个数。预处理阶乘 $O(n)$,单次展开 $O(n \log n)$。 123456789101112131415161718...