第一道题
思路
- 每次假设我们当前要选择的是index位置的元素,有很多选择,从index开始一直到数组结束
- 但是我们每次选择之后如何和前面已经选择好的元素组成的数组连接起来呢,我们从后面选择要放置到index位置的元素,与我们目前的index位置的元素进行互换,
- 之后进行下一层的递归
- 最后递归回来之后,我们再交换回去
代码
1 |
|
第二道题
note info 核心:如何避免重复出现。思路:我们使用一个map或者set来统计index位置,我们已经交换过的元素,如果下次要交换的元素与我们之前交换过的元素的元素值相同则跳过,因此我们可以使用map或者set来统计。但是要注意位置,每次递归进来的时候我们都要重新建立针对当前index位置的一个统计容器
思路
- 每次假设我们当前要选择的是index位置的元素,有很多选择,从index开始一直到数组结束
- 但是我们每次选择之后如何和前面已经选择好的元素组成的数组连接起来呢,如果放置的元素与我们之前放置过的元素不重复,那么我们将从后面选择要放置到index位置的元素,与我们目前的index位置的元素进行互换,
- 之后进行下一层的递归
- 最后递归回来之后,我们再交换回去
代码
1 |
|