LeetCode-46-Permutations
题目描述:

链接:https://leetcode-cn.com/problems/permutations/
思路分析:
这道题也是用回溯算法,但是和子集这道题还有点差别。其实这道题可以看做是对一个树进行遍历,类似下图:

与子集不同的是,这个是每个样本点都需要取到,也就是说,每次递归遍历的时候,起点都为零,那么有:
1 | private void back(List<Integer> tmp, int[] nums) { |
同时,每个点都只能取一次,需要怎么去做呢?我这里,搞一个表,也就是visited
数组,访问过了,就置true
,然后回溯的时候置false
。
1 | private void back(List<Integer> tmp, int[] nums,boolean[] visited) { |
至此,回溯函数就写完了。
代码:
1 | class Solution { |
AC记录:
