Leetcode 46,47 全排列问题

80 阅读1分钟

image.png

image.png

全排列问题和组合问题不一样的是,组合的数字不是固定的,而全排列的元素必须是数组的长度,这就要求你要把所有的元素遍历一遍,由于根节点的分支,所有你有n个选择,但是你每一层递归的元素还是要从头开始,这里我们使用used数组来标记你的元素是否被用过,从而保证了结果集的个数,用一个count保证我们结果集的长度,也保证了递归的出口

image.png

image.png

image.png

image.png

此剪枝的条件要好好研究 比如说 1 1 2 第一次选第一个1 和 第一次选第二个1 是一样的,反正你都要从头开始遍历,所有你的剪枝条件已经出来了,i>0 && nums[i]==nums[i-1] && used[i-1] = false;