leetcode46. 全排列
【摘要】 给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
思路:搜索回溯经典题
class Solution { int[] visit...
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
思路:搜索回溯经典题
-
class Solution {
-
int[] visited;//标记数组
-
List<List<Integer>> res = new ArrayList<>();//答案
-
public List<List<Integer>> permute(int[] nums) {
-
visited = new int[nums.length];
-
backtrack(nums, new ArrayList<Integer>());
-
return res;
-
}
-
-
private void backtrack(int[] nums, ArrayList<Integer> tmp) {
-
if (tmp.size() == nums.length) {
-
res.add(new ArrayList<>(tmp));
-
return;
-
}
-
for (int i = 0; i < nums.length; i++) {
-
if (visited[i] == 1) continue;
-
visited[i] = 1;
-
tmp.add(nums[i]);
-
backtrack(nums, tmp);
-
visited[i] = 0;
-
tmp.remove(tmp.size() - 1);
-
}
-
}
-
}
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/104037165
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)