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], ]
classSolution {
public:
vector
voidfun(vector
//用于递归的 函数 n 当前层数 k 最大层数
if(n == k){ //递归 到 结尾处 时 将 vv 添加到 vec 中
vec.push_back(vv);
return;
}
for(inti=ii+1;i vv[n] = i; fun(vv,i,n+1,k,mx+1); // 下一层 从 i 开始 到 mx+1 处结束 } } vector vector vec.clear(); for(inti=1;i vv[0] = i; fun(vv,i,1,k,n-k+2+1); } returnvec; } }; 上面有注释,下面是死路。。哦不,下面是思路,嘿嘿:: 参数中 有个 K ,最直接的想法 就是 写 K 个循环 ,但坑爹的是,K是个 变量 ,是在写不出来; 那么递归 来啦,,我们想一下 多叉树 要 怎么递归遍历 , 是的 一个子树一个子树 的走 就OK 啦; 这个也是一样,只要 掌握 好 每一层 需要从哪里 开始 和 到哪里结束 就 成功了 2/3; 就这些 ,之后的看代码吧; 66666