思路:回溯法

对于每一个位置 i,我们可以枚举当前未使用的数字中可以放在 i 位置的数,然后判断是否满足条件。如果满足条件,则递归到下一个位置,否则继续枚举下一个数。如果枚举完所有数都不满足条件,则回溯到上一个位置,继续枚举下一个数。

具体来说,我们可以用一个布尔数组 used 来记录哪些数字已经被使用过了,用一个数组 perm 来记录当前排列的状态,用一个变量 count 来记录合法排列的总数。

代码:

给你一个下标从 0 开始的整数数组 nums 它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件我们称它是一个特别的排列:对于 0 = i n - 1 的下标 i 要么 numsi numsi+1 == 0 要么 numsi+1 numsi == 0 。请你返回特别排列的总数目n最大为14

原文地址: http://www.cveoy.top/t/topic/heh4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录