[LeetCode] 77. Combinations
来源:互联网 发布:网易博客发帖软件 编辑:程序博客网 时间:2024/06/04 19:17
思路:
思路1是我自己想到的最简单的DFS, 然后https://discuss.leetcode.com/topic/11718/backtracking-solution-java
这里看到了很炫酷的优化, 其实就是起始值最大不是n, 而是n - k + 1, 比如n = 4, k = 2, 你不可能出现[4, X]的组合, 所以最多到3, 后面的就不用考虑了, 同理对于第i个位置的数字取值范围是[上一位数字 + 1, n - k + 1 + i]. 所以第二个代码就改了两个小处, 然而效率飙升.
void dfs(vector<vector<int>>& res, vector<int>& candidate, int start, int n, int k) { if (candidate.size() == k) { res.push_back(candidate); return; } for (int i = start; i <= n; i++) { candidate.push_back(i); dfs(res, candidate, i + 1, n, k); candidate.pop_back(); }}vector<vector<int>> combine(int n, int k) { vector<vector<int>> res; vector<int> candidate; dfs(res, candidate, 1, n, k); return res;}
void dfs(vector<vector<int>>& res, vector<int>& candidate, int start, int n, int k) { if (candidate.size() == k) { res.push_back(candidate); return; } for (int i = start; i <= n; i++) { candidate.push_back(i); dfs(res, candidate, i + 1, n + 1, k); candidate.pop_back(); }}vector<vector<int>> combine(int n, int k) { vector<vector<int>> res; vector<int> candidate; dfs(res, candidate, 1, n - k + 1, k); return res;}
0 0
- LeetCode 77. Combinations
- [LeetCode]77.Combinations
- LeetCode --- 77. Combinations
- [Leetcode] 77. Combinations
- [leetcode] 77.Combinations
- leetCode 77.Combinations (组合)
- [leetcode] 77. Combinations
- 77. Combinations LeetCode
- <LeetCode OJ> 77. Combinations
- [LeetCode]77. Combinations
- leetcode 77. Combinations
- LeetCode *** 77. Combinations
- leetcode 77. Combinations
- LeetCode 77. Combinations
- LeetCode-77.Combinations
- LeetCode 77.Combinations
- [LeetCode]problem 77. Combinations
- [LeetCode] 77. Combinations
- HTML标记与属性
- JS 高级总结
- Android自动测试命令Monkey
- POJ 1985 Cow Marathon(牛的锻炼,树的直径)
- 双向队列
- [LeetCode] 77. Combinations
- 《WINDOWSPE权威指南》学习笔记(二)- PE文件结构及字段说明
- 在UITextField开始加空格
- 【笔试面试】第二波
- 一、大神与二货系列之indexOf(一)
- 23种设计模式
- struts2中如何将json格式的数据传到前端呢??json-default就是你要找的答案
- python开发简单爬虫:实战篇
- java 遍历resultset报错: peration not allowed after ResultSet closed【整理】