题目
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
PHP代码实现
array_slice 从数组中取出一段
class Solution {
/**
* @param Integer $n
* @param Integer $k
* @return Integer[][]
*/
function combine($n, $k) {
$arr = range(1,$n);
return self::combination($arr, $k);
}
function combination($st_array, $m)
{
$re_array = array();
$n = count($st_array);
if ($m <= 0 || $m > $n) {
return $re_array;
}
for ($i = 0; $i < $n; $i++) {
$t = array($st_array[$i]);
if ($m == 1) {
$re_array[] = $t;
} else {
$item_array = array_slice($st_array, $i + 1);
$c = self::combination($item_array, $m - 1);
foreach ($c as $v) {
$re_array[] = array_merge($t, $v);
}
}
}
return $re_array;
}
}