📅  最后修改于: 2023-12-03 15:27:07.939000             🧑  作者: Mango
这个问题涉及到了排列和组合的知识。我们可以使用回溯法来构造这样的排列。
def getPermutation(n: int) -> List[List[int]]:
def backtrack(path, used):
if len(path) == n:
res.append(path[:])
return
for num in range(1, n + 1):
if used[num]:
continue
if path and abs(num - path[-1]) == 1:
continue
used[num] = True
path.append(num)
backtrack(path, used)
used[num] = False
path.pop()
res = []
used = [False] * (n + 1)
backtrack([], used)
return res