1. 概述

给定两个整数 nk,返回 1 … n 中所有可能的 k 个数的组合。
示例: 输入: n = 4, k = 2

输出:

[

[2,4],

[3,4],

[2,3],

[1,2],

[1,3],

[1,4],

]

2. 解题

  1. <?php
  2. class Solution {
  3. private $ret = [];
  4. /**
  5. * @param Integer $n
  6. * @param Integer $k
  7. * @return Integer[][]
  8. */
  9. public function combine($n, $k) {
  10. $this->do($n, $k);
  11. return $this->ret;
  12. }
  13. public function do($n, $k, $arr = [], $ele = 1) {
  14. if (count($arr) == $k) {
  15. $this->ret[] = $arr;
  16. return;
  17. }
  18. if ($ele > $n) {
  19. return;
  20. }
  21. for ($i = $ele; $i <= $n; $i++) {
  22. array_push($arr, $i);
  23. $this->do($n, $k, $arr, ++$ele);
  24. array_pop($arr);
  25. }
  26. return;
  27. }
  28. }
  29. $n = 4;
  30. $k = 2;
  31. $cls = new Solution();
  32. $r = $cls->combine($n, $k);
  33. array_walk ($r, function (&$v) {
  34. $v = implode(',', $v);
  35. });
  36. print_r($r);