因为确定leecode测试用例:-10 <= nums[i] <= 10,所以使用固定数组来代替unordered_set<> 进行树枝节点去重操作,减少一定的开销,同时相对来讲提升一定运行速度。

给出全排列算法关键思路:

代码:

class Solution {
public:vector<vector<int>> result;vector<int> path;int used[21]={0};// 存储出现的元素 作为全局变量 这里目的:对同一树枝进行去重操作void backtracking(const vector<int>& nums){// 找到了一组全排列if(path.size()==nums.size()){result.push_back(path);// 添加结果return;// 这里需要return,否则会不断递归下去}// for循环遍历树层节点,需要从0(初始位置)开始,不可从startIndex开始for(int i=0;i<nums.size();++i){// 若当前元素在同一树枝出现过,则continueif(used[nums[i]+10]==1)continue;elseused[nums[i]+10]=1;// // 若当前元素在同一树枝未出现,置1表示出现path.push_back(nums[i]);// 处理节点backtracking(nums);// 递归path.pop_back();// 回溯,撤销处理节点// 因为是对同一树枝节点进行去重操作,所以要对used“集合”中元素进行回溯,删除掉树枝出现过的节点used[nums[i]+10]=0;}}vector<vector<int>> permute(vector<int>& nums) {backtracking(nums);return result;}
};

【LeetCode】46 全排列 回溯法三部曲模板+树枝节点去重相关推荐

  1. 135. Leetcode 46. 全排列 (回溯算法-排列问题)

    class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 方法一# res = [] # 存放符合条件结果的集 ...

  2. LeetCode算法总结-回溯法与深度优先搜索

    转载自  LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...

  3. LeetCode Gray Code(回溯法)

    问题:gray code是一种二进制数字系统,两个连续的数只有一位不同.给出一个正整数n,n表示gray code的位数,输出gray code. 思路:使用回溯法.通过枚举0,1,2,3的gray ...

  4. leetcode — 46. 全排列(不含重复数字)

    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3 ...

  5. LeetCode 77 组合 -- 回溯法

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/combinations 题意: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 ...

  6. LeetCode 46. 全排列(回溯)

    文章目录 1. 题目信息 2. 解题 2.1 利用hash map解决 2.2 改用bool数组判断是否出现过 1. 题目信息 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例:输入: [1 ...

  7. leetcode —— 46. 全排列(递归+回溯)

    给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2 ...

  8. LeetCode 46.全排列 Python 3 回溯算法

    这道题是一道很经典的回溯算法题, 先来看看代码: class Solution:def permute(self, nums: List[int]) -> List[List[int]]:res ...

  9. leetCode 46. Permutations 回溯问题 | Medium

    46. Permutations(全排列问题--回溯问题经典) Given a collection of distinct numbers, return all possible permutat ...

最新文章

  1. 数学图形(2.26) 3D曲线结
  2. java网络编程面试题
  3. Linux运维:ulimit命令修改打开文件的句柄数
  4. celery java_Celery详解
  5. Android开发工具之Android Studio--调用系统隐藏方法之操作aidl文件步骤
  6. linux下mysql乱码_linux下mysql中文乱码
  7. 3种方法实现http虚拟主机
  8. 软件人员kpi制定模板_软件科技公司绩效考核办法模板
  9. kafka从入门到精通:Java设置全局变量传值
  10. tensorflow之卷积池化和全连接
  11. E-MapReduce 2.0.0 版本发布
  12. java给byte赋值_关于JAVA中Byte数据类型二进制赋值运算报错问题
  13. React学习笔记—JSX
  14. skype api java版 打电话
  15. 消息摘要(Message Digest)及其算法
  16. 全文检索Elasticsearch研究
  17. 懂户型图 如何选择好户型
  18. r语言nonzerocoef函数_lars算法R语言操作指南.pdf
  19. vue3学习—state的变化和使用
  20. 关于web项目播放AMR格式音频的问题

热门文章

  1. 足不出户24小时立案 广东法院全年网上立案超29万件
  2. C语言中关于feof函数fgetc函数一些理解
  3. 大数据平台比较-CDH、HDP、CDP
  4. pdf.js添加关键词背景按钮
  5. 3378: [Usaco2004 Open]MooFest 狂欢节
  6. 酱牛肉的制作方法:三种
  7. 七雄争霸服务器维护至几点,七雄争霸11月11日8-12点全区维护公告
  8. 4g网络什么时候淘汰_5G手机的呼声越来越大,那4G手机还有多久被淘汰?这个时间要记住...
  9. 小学生python游戏编程arcade----基本知识3
  10. 哪款运动蓝牙耳机好用、运动真无线蓝牙耳机推荐