LeetCode:Combinations
来源:互联网 发布:视频检索软件 编辑:程序博客网 时间:2024/05/18 00:52
Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
Subscribe to see which companies asked this question
思路:
例:n = 4, k = 3;有combs,comb数组
组合情况有:
1)1 2 3
2)1 2 4
3)1 3 4
4)2 3 4
生成过程:
comb=[], k=3,初始状态;
comb=[1], k=2,加入1;
comb=[1,2], k=1,加入2;
comb=[1,2,3], k=0;加入3,结果添加到combs;
comb=[1,2], k=1;去掉3
comb=[1,2,4], k=0;加入3,结果添加到combs;
comb=[1,2], k=1,去掉4;
comb=[1], k=2,这时由于已经遍历到4(==n),要再去掉2;
comb=[1,3], k=1,加入3;
comb=[1,3,4], k=0,加入4,结果添加到combs;
comb=[1,3], k=1,去掉4;
comb=[1], k=2,这时由于已经遍历到n(==4),要再去掉3;
comb=[1,4], k=1,加入4;已经到n;
comb=[1], k=2,去掉4;
comb=[], k=3,去掉1;
comb=[2], k=2,加入2;
comb=[2,3], k=1,加入3;
comb=[2,3,4], k=0,加入4,结果添加到combs;
c++ code:
class Solution {public: vector<vector<int>> combine(int n, int k) { vector<vector<int>> combs; vector<int> comb; combine(combs,comb,1,n,k); return combs; } void combine(vector<vector<int>> &combs, vector<int> &comb,int begin,int n,int k) { if(k==0){ combs.push_back(comb); return; } for(int i=begin;i<=n;i++) { comb.push_back(i); combine(combs,comb,i+1,n,k-1); comb.pop_back(); } }};
- LeetCode: Combinations
- LeetCode: Combinations
- LeetCode Combinations
- [Leetcode] Combinations
- [LeetCode] Combinations
- Leetcode: Combinations
- LeetCode Combinations
- [Leetcode] Combinations
- [Leetcode] Combinations
- [leetcode] Combinations
- [LeetCode]Combinations
- [leetcode]Combinations
- LeetCode-Combinations
- [leetcode] Combinations
- LeetCode - Combinations
- 【Leetcode】Combinations
- Leetcode: Combinations
- 【leetcode】Combinations
- (4.1.27.9)创建简单的JniDemo和Jni中打印log信息
- (转)Mahout使用入门
- fatal error: invalid virtual filesystem overlay file '/[Path]/all-product-headers.yaml
- 一个示例让你明白适配器模式
- web前端开发命名规则
- LeetCode:Combinations
- WebView的分析与使用
- 汉字转全拼
- ceph存储 ceph中pglog处理流程
- 欢迎使用CSDN-markdown编辑器
- cygwin 安装以及配置
- 实现一个TODO宏
- Activity和Service的生命周期(图)
- mybatis学习笔记(七)增删改查