diff --git a/1718. Construct the Lexicographically Largest Valid Sequence b/1718. Construct the Lexicographically Largest Valid Sequence new file mode 100644 index 0000000..01d549f --- /dev/null +++ b/1718. Construct the Lexicographically Largest Valid Sequence @@ -0,0 +1,36 @@ +class Solution { + public: + vector constructDistancedSequence(int n) { + vector ans(2 * n - 1); + dfs(n, 0, 0, ans); + return ans; + } + + private: + bool dfs(int n, int i, int mask, vector& ans) { + if (i == ans.size()) + return true; + if (ans[i] > 0) + return dfs(n, i + 1, mask, ans); + for (int num = n; num >= 1; --num) { + if (mask >> num & 1) + continue; + if (num == 1) { + ans[i] = num; + if (dfs(n, i + 1, mask | 1 << num, ans)) + return true; + ans[i] = 0; + } else { + if (i + num >= ans.size() || ans[i + num] > 0) + continue; + ans[i] = num; + ans[i + num] = num; + if (dfs(n, i + 1, mask | 1 << num, ans)) + return true; + ans[i + num] = 0; + ans[i] = 0; + } + } + return false; + } +};