#2741

Special Permutations

medium · verified · 29.3% accepted · 589 likes · top 7%

array · dynamic programming · bit manipulation · bitmask

Description

You are given a 0-indexed integer array nums containing n distinct positive integers. A permutation of nums is called special if:

- For all indexes 0 <= i < n - 1, either nums[i] % nums[i+1] == 0 or nums[i+1] % nums[i] == 0.

Return the total number of special permutations. As the answer could be large, return it modulo 109 + 7.

Example 1:

Input: nums = [2,3,6]
Output: 2
Explanation: [3,6,2] and [2,6,3] are the two special permutations of nums.

Example 2:

Input: nums = [1,4,3]
Output: 2
Explanation: [3,1,4] and [4,1,3] are the two special permutations of nums.

Solution