3437. Permutations III π
Description
Given an integer n
, an alternating permutation is a permutation of the first n
positive integers such that no two adjacent elements are both odd or both even.
Return all such alternating permutations sorted in lexicographical order.
Example 1:
Input: n = 4
Output: [[1,2,3,4],[1,4,3,2],[2,1,4,3],[2,3,4,1],[3,2,1,4],[3,4,1,2],[4,1,2,3],[4,3,2,1]]
Example 2:
Input: n = 2
Output: [[1,2],[2,1]]
Example 3:
Input: n = 3
Output: [[1,2,3],[3,2,1]]
Constraints:
1 <= n <= 10
Solutions
Solution 1: Backtracking
We design a function \(\textit{dfs}(i)\), which represents filling the \(i\)-th position, with position indices starting from \(0\).
In \(\textit{dfs}(i)\), if \(i \geq n\), it means all positions have been filled, and we add the current permutation to the answer array.
Otherwise, we enumerate the numbers \(j\) that can be placed in the current position. If \(j\) has not been used and \(j\) has a different parity from the last number in the current permutation, we can place \(j\) in the current position and continue to recursively fill the next position.
The time complexity is \(O(n \times n!)\), and the space complexity is \(O(n)\). Here, \(n\) is the length of the permutation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|