当前位置: 首页 > news >正文

代码随想录 Q79.全排列

题目要求:排列问题,区别于前面的组合问题、分割回文串和子集问题。以[1,2,3]为例,抽象成树形结构如下所示:

回溯三部曲:

1.递归函数的参数:由于排列是有序的,也就是说[1,2]和[2,1]是两个集合,这和之前分析的子集以及组合不同。因此处理排列问题不需要startIndex,但是排列问题需要一个used数组来标记已经选择的元素,如下图橘黄色部分所示:

    List<List<Integer>> res = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();boolean[] used;
private void backTracking(int[] nums)

2.递归终止条件:如下图所示,叶子节点是收集结果的地方,所以到达叶子节点时终止。到达叶子节点的条件是收集元素的path数组的大小达到nums数组时,说明找到了一个全排列,也表示到达了叶子节点。

        if(path.size() == nums.length){res.add(new ArrayList<>(path));return;}

3.确定单层搜索的逻辑:

(1)排列问题最大的不同在于不需要使用startIndex。因为排列问题每次都要从头开始搜索,例如元素1在[1,2]中已经使用过了,但是在[2,1]中还要再使用一次1。

(2)used数组其实就是记录path里有哪些元素使用了,一个排列里一个元素只能使用一次。

代码如下所示:

        for(int i = 0;i < nums.length;i++){if(used[i]){continue;}used[i] = true;path.add(nums[i]);backTracking(nums);path.removeLast();used[i] = false;}

附代码:

class Solution {List<List<Integer>> res = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();boolean[] used;public List<List<Integer>> permute(int[] nums) {if(nums.length == 0){return res;}used = new boolean[nums.length];backTracking(nums);return res;}private void backTracking(int[] nums){if(path.size() == nums.length){res.add(new ArrayList<>(path));return;}for(int i = 0;i < nums.length;i++){if(used[i]){continue;}used[i] = true;path.add(nums[i]);backTracking(nums);path.removeLast();used[i] = false;}}
}

http://www.dtcms.com/a/583620.html

相关文章:

  • 网站做网站反向代理违法360免费
  • 网站建设的基本流程和技术规范青岛网站建设服务平台
  • 短视频制作价格明细网站seo推广平台
  • 招聘预算网站怎么做wordpress网站破解
  • visual studio 做网站网站建设 工商注册
  • 三大特性+盒子模型
  • 有名的网站建设网站与app的区别
  • 衡水做企业网站的公司彩票网站做维护是什么
  • 河南省建设工程信息网站江门网站制作华企立方
  • 网站备案幕布 下载报名网站建设公司哪里有
  • 成都建设网页公司关键词优化排名平台
  • 豆瓣网站是怎么建设的开发财务软件需要多少钱
  • 门户网站排行榜dede网站不能运行php文件
  • 社区营销推广活动方案南京搜索引擎推广优化
  • 如何做网站seo韩小培专业设计公司vi设计
  • python做网站教程网站建设nayuwang
  • 网站首页设计网站数据接口怎么做
  • 网络广告投放流程的第一步要做网站开发怎么做才有利于seo
  • “太土了”用英语怎么说?
  • 强化学习RL
  • 意识、AGI与人类文明的黄昏
  • 企业网站建设规划书的内容织梦医院网站模板
  • 网站谷歌优化怎么做外贸建站 服务器
  • java 正则表达式大全
  • 68Design一样设计网站今天重庆新闻
  • 嘉兴网站设计999 999公司建设网站需要固定ip吗
  • 网站商城方案江苏建设工程交易中心网站
  • 湖南网站建设报价微信小游戏开发
  • CF Weakness and Poorness(三分查找+最大子段和)
  • 建设网站找什么传媒公司运营是干嘛的