54 回溯算法求解全排列问题

问题描述:给定一个没有重复数字的序列nums,返回其所有可能的全排列。

回溯算法求解:最多进行nums.length次深度的dfs递归,每一次都从剩下未选择序列里面选取一个进行递归,使用used数组进行保存当前是否选取;

java 复制代码
public void  tranceBack(int []nums,int used[],int index,LinkedList<Integer>templist,LinkedList<LinkedList<Integer>>res)
{
if(index==nums.length){
res.add(templist);
return ;
}
for(int i=0;i<nums.length;i++)
{
if(used[i])
{
continue;
}else
{
used[i]=true;
templist.add(nums[i]);
tranceBack(nums,used,index+1,templist,res);
used[i]=false;
templist.remove(templist.size()-1);
}
}
}
public List<List<Integer>>TranceBack(int [] nums)
{
List<List<Integer>>res=new LinkedList<LinkedList<Integer>>();
Boolean [] used=new Boolean[nums.length];
tranceBack(nums,used,new LinkedList<Integer>(),res);
​​​​​​​return res;
}

而对于所有子集而言,每一次递归都保存一次结果,for循环从index开始,不需要used数组。

相关推荐
疯一样的码农1 分钟前
使用命令行创建 Maven 项目
java·maven
CV大法好6 分钟前
刘铁猛C#入门 027 抽象和开闭原则
开发语言·c#
飞滕人生TYF8 分钟前
位运算实现加法 的过程中 保证最终进位为 0 详解
java·位运算
七侠镇莫尛貝大侠202311 分钟前
C:mbedtls库实现https双向认证连接示例_七侠镇莫尛貝大侠20241122
c语言·开发语言·https
数据小爬虫@13 分钟前
利用Python爬虫获取淘宝商品评论:实战案例分析
开发语言·爬虫·python
A.A呐19 分钟前
LeetCode 1658.将x减到0的最小操作数
算法·leetcode
hn小菜鸡21 分钟前
LeetCode 144.二叉树的前序遍历
算法·leetcode·职场和发展
情勤坊21 分钟前
JAVA实现将PDF转换成word文档
java·pdf·word
苹果酱056722 分钟前
springcloud-网关路由gateway
java·开发语言·spring boot·mysql·中间件