题目来源
根据数组nums = [1,2,3],生成全排列可以模拟出一个树形结构,如下图所示

该树结构具有如下特点:
第一层节点,我们可以选择数组任意一个元素,如1或2或3,而一旦选定,则后面层级的节点将不能再选该数组元素,比如第一层节点选择了1,则第二、三层就不能再选1,同理,第二层节点如果选择了2,则第三层节点就不能再选择2,只能选择仅剩的3。
我们可以采用递归的方式生成上面的树:
第一层节点:从0索引开始遍历nums数组,遍历的每一个元素都可以作为第一层节点
第二层节点:从0索引开始遍历nums数组,此时我们需要进行甄别,如果遍历的元素已经在第一层使用过了,则不能作为第二层节点
实现:我们可以预先定义一个used数组,长度和nums数组相同,used[i]用于标记nums[i]是否已使用。获取第一层节点时,如果取nums[i],那么就将used[i] = true,标记为使用过,这

已下架不支持订阅
701





