526. Beautiful Arrangement (Medium) - TengnanYao/daily_leetcode GitHub Wiki

class Solution:
    def countArrangement(self, n: int) -> int:
        nums = list(range(1, n + 1))
        self.result = 0
        def dfs(nums, cur):
            if not nums:
                self.result += 1
            else:
                n = len(cur)
                for i, num in enumerate(nums):
                    if num % (n + 1) == 0 or (n + 1) % num == 0:
                        dfs(nums[ : i] + nums[i + 1 : ], cur + [num])
        dfs(nums, [])
        return self.result