Leetcode - 046 Permutations

全排列问题是回溯的典型例题:
1.可行解的组成形式是给定数组中的所有数的组合,故而大小上可以作为可行解判定条件
2.每次需要在剩下可被选中的集合中选择一个,创建mask数组

class Solution {
public:void dfs(vector<vector<int>> &vct, vector<int> &cur, vector<int>& nums,vector<int> & used){if (cur.size() == nums.size()){vct.push_back(cur);return;}for (int i = 0; i < nums.size(); ++i){if (used[i] == 0){cur.push_back(nums[i]);used[i] = 1;dfs(vct, cur, nums, used);used[i] = 0;cur.pop_back();}}}vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> vct;int n = nums.size();if (n <= 0)return vct;vector<int> cur;vector<int> used(n, 0);dfs(vct, cur, nums, used);return vct;}
};

Leetcode - 047. Permutations II

diff : 需要考虑val1 = val2 的情况,需要sort将相同元素聚类,然后可以参考前文 Leetcode - 040. Combination Sum II 去重的方法

class Solution {
public:void dfs(vector<vector<int>> &vct, vector<int> &cur, vector<int>& nums, vector<int> & used){if (cur.size() == nums.size()){vct.push_back(cur);return;}for (int i = 0; i < nums.size(); ++i){if (used[i] == 0){int pre_index = i - 1;bool repeated = false;while (pre_index >= 0 && nums[pre_index] == nums[i]){if (used[pre_index] == 0){repeated = true;break;}--pre_index;}if (repeated)continue;cur.push_back(nums[i]);used[i] = 1;dfs(vct, cur, nums, used);used[i] = 0;cur.pop_back();}}}vector<vector<int>> permuteUnique(vector<int>& nums) {vector<vector<int>> vct;vector<int> cur;int n = nums.size();if (n <= 0)return vct;vector<int> used(n, 0);dfs(vct, cur, nums, used);return vct;}
};

Leetcode - Permutations I,II相关推荐

  1. Leetcode - Subsets I,II

    Leetcode - 078. Subsets 这道题重定义了什么叫可行解: 一般而言,可行解需要满足强约束性条件集,而本题的可行解就是单一弱约束性条件(distinct integers,只需要当前 ...

  2. [LeetCode] Permutations II 全排列之二

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  3. LeetCode Permutations II(有重复元素的全排列)

    问题:给出一个有重复元素的数组,要求输出全排列 思路:先排序,然后使用next_permutation 具体代码参考: https://github.com/wuli2496/OJ/tree/mast ...

  4. LeetCode Permutations(不重复数的所有排列)

    问题:给出一个没有重复的数组,要求输出所有的排列 思路:先排序,然后使用STL中的next_permution 具体参考: https://github.com/wuli2496/OJ/tree/ma ...

  5. LeetCode Single Number I / II / III

    [1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...

  6. 【DFS + 记忆化递归】LeetCode 140. Word Break II

    LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...

  7. 【重点!DP】LeetCode 639. Decode Ways II

    LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...

  8. 【DFS + Backtracking】LeetCode 212. Word Search II

    LeetCode 212. Word Search II Solution1:我的答案 暴力搜索..基于第79题的答案,真的是非常之慢啊!!! 快的方法均是基于字典树的方法,真是复杂.. class ...

  9. 【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II

    LeetCode 132. Palindrome Partitioning II Solution1:我的答案1 直接模仿131那道题的DFS解法,找其中size最小的.果不其然,因为超时只能部分AC ...

最新文章

  1. BT:​关键胞外酶触发了细菌群落演替偶联的高效堆肥
  2. tableView 使用 reloadSections:withRowAnimation: 时,会跳动的问题
  3. 手机刷的面具是什么_从刷入到跑路-Magisk(面具)刷入使用教程
  4. jquery --- 控制元素的隐藏/显示
  5. leetcode306. 累加数(回溯)
  6. ubuntu mysql 连接_Ubuntu 配置MySQL远程连接
  7. springcloud断点续传源码_两套SpringCloud版的开源项目,项目源码和教程齐全
  8. 代码上传到github上
  9. 送人玫瑰,手有余香!
  10. uni-app小程序,实现根据中文首字母排序功能
  11. 众昂矿业:萤石因奇特的“荧光效应”而得名
  12. 电脑屏幕由刺眼的白色改为淡绿色
  13. cadence常见技巧和错误。。。
  14. yum命令的基本用法
  15. 坐标型动态规划——轰炸敌人
  16. 五、cadence ic 5141 ——PDK规则查看
  17. 没文化真可怕(一些互联网职位)
  18. 美团网CEO王兴:创业十年屡败屡战 终成硕果
  19. 字体包和字体子集制作,位图字体制作工具推荐
  20. redis基本操作命令和查看list、hash数据命令

热门文章

  1. [Java] 蓝桥杯 BASIC-8 基础练习 回文数
  2. crontab 不执行解决方案
  3. eclipse在线安装ivy和ivyde
  4. RedHat Linux安装Informix v10.x(图文详解)
  5. LinuxDHCP中继,DHCP服务IP自动获取
  6. CGMP, IGMP Snooping and RGMP
  7. 常规RPC通讯过程【转载】
  8. Java Queue 使用总结
  9. Android Paint类属性说明
  10. ExtJS--Combobox多选相关(1)