【LeetCode】Combination

来源:互联网 发布:北京棉花检验数据平台 编辑:程序博客网 时间:2024/05/19 02:05
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],

]

思路:

递归。

  1. 用一临时数组solution存储元素, 其大小应为k
  2. base case:solution长度为k
  3. else 继续向solution push元素,递归,然后弹出最后元素

class Solution {public:vector<vector<int>> combine(int n, int k) {vector<int> solution;  vector<vector<int>> result;  getCombine(n,k,1,solution,result);      return result; }void getCombine(                  int n,                  int k,                  int level,                  vector<int> &solution,                  vector<vector<int>> &result){      if(solution.size() == k){      result.push_back(solution);      return;      }     for(int i = level; i<=n; i++){  solution.push_back(i);  getCombine(n,k,i+1,solution,result);  solution.pop_back();  }  }   };


1 0
原创粉丝点击