
Leetcode - Permutations I,II
发布日期:2025-04-04 18:46:39
浏览次数:10
分类:精选文章
本文共 2297 字,大约阅读时间需要 7 分钟。
全排列问题是回溯法的典型例子。可行解的组成形式是给定数组中的所有数的组合,因此可作为可行解的判定条件。每次需要在剩下可被选中的集合中选择一个,创建mask数组。
class Solution {public: void dfs(vector vct, vector cur, const vector & nums, vector& 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 > permute(const vector & nums) { vector > vct; if (nums.size() <= 0) return vct; vector cur; vector used(nums.size(), false); dfs(vct, cur, nums, used); return vct; }};
diff:需要考虑val1 = val2的情况,需排序将相同元素聚类,参考前文处理重复的方法。
class Solution {public: void dfs(vector vct, vector cur, const vector & nums, vector& used) { if (cur.size() == nums.size()) { vct.push_back(cur); return; } for (int i = 0; i < nums.size(); ++i) { if (used[i]) continue; int pre_index = i - 1; bool repeated = false; while (pre_index >= 0 && nums[pre_index] == nums[i]) { if (used[pre_index]) { repeated = true; break; } --pre_index; } if (repeated) continue; cur.push_back(nums[i]); used[i] = true; dfs(vct, cur, nums, used); used[i] = false; cur.pop_back(); } } vector > permuteUnique(const vector & nums) { vector > vct; if (nums.size() <= 0) return vct; vector cur; vector used(nums.size(), false); dfs(vct, cur, nums, used); return vct; }};
注意:请根据实际需求补充具体内容,确保代码符合上下文,并维护功能性和编译正确性。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月06日 23时07分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
2021-05-09
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2021-05-09
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2021-05-10
Android DEX加固方案与原理
2021-05-10
iOS_Runtime3_动态添加方法
2021-05-10
我用wxPython搭建GUI量化系统之最小架构的运行
2021-05-10
selenium+python之切换窗口
2021-05-10
map[]和map.at()取值之间的区别
2021-05-11
VTK:可视化之RandomProbe
2021-05-12
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2021-05-12
pair的用法
2021-05-12
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2021-05-14
echarts 基本图表开发小结
2021-05-14
TreeSet、TreeMap
2021-05-14
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2021-05-14
嵌入式系统试题库(CSU)
2021-05-15
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2021-05-15
00013.05 字符串比较
2021-05-15
UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
2021-05-16