递归经典题

下面从几道题中总结递归的处理经验。

  1. 首先梳理规律
  2. 找到最小元素,先处理最小元素,然后将剩余的元素传入递归函数,继续处理
  3. 递归函数中要设置终止条件

1. 没有重复项数字的全排列

给出一组数字,返回该组数字的所有排列。

  • 数字个数:0< n ≤6
  • 要求:空间复杂度 O(n!),时间复杂度 O(n!)。

示例 1:

输入:[1,2,3]
返回值:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:

输入:[1]
返回值:[[1]]

答案