作者:鹰击长空1943 | 来源:互联网 | 2023-10-12 18:32
回溯法框架参考这篇文章:https:blog.csdn.netqq_41901915articledetails104113330执行结果:通过显示详情执行用时:2ms,在所有Ja
回溯法框架参考这篇文章:
https://blog.csdn.net/qq_41901915/article/details/104113330
执行结果:
通过
显示详情
执行用时 :2 ms, 在所有 Java 提交中击败了53.81% 的用户
内存消耗 :37.4 MB, 在所有 Java 提交中击败了52.98%的用户
题目:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
采用回溯法,并利用回溯法框架
主要就是找到几个关键点
第一个 选择空间,当然也就是传入的数组
第二个就是路径,自己创建一个路径就可以了
结束的条件
代码:
class Solution {
List> result=new LinkedList<>();
public List> permute(int[] nums) {
LinkedList track=new LinkedList<>();
backtrack(nums,track);
return result;
}
public void backtrack(int[] nums,LinkedList track)
{
//成功的条件
if(track.size()==nums.length)
{
result.add(new LinkedList<>(track));
return;
}
//这个for循环表示选择的空间
for(int i=0;i {
//如果已经选择过了,就不再选择了
if(track.contains(nums[i]))
{
continue;
}
//回溯法的核心先加入,递归,再去掉
track.add(nums[i]);
backtrack(nums,track);
track.removeLast();
}
}
}
IDEA_TEYU_1112
发布了418 篇原创文章 · 获赞 436 · 访问量 22万+
他的留言板
关注