Вот код:
echo "<pre>";
function getContigousSubSet($n)
{
$set_array = range(1,$n);
$main_array = array();
for ($i=0; $i <$n; $i++) {
for($j = $i;$j < $n; $j++){
$interval_array = array();
for ($k = $i; $k <= $j; $k++){
array_push($interval_array,$set_array[$k]);
} array_push($main_array,$interval_array);
}
}
return $main_array;
}
$result = getContigousSubSet(3);
var_dump($result);
Может ли сложность превратиться в O (n) с помощью каких-либо математических логик c или других способов?
Я ожидаю, что необходимо преобразовать этот код в одиночный для l oop, чтобы сложность могла быть O (n).
Если у кого-нибудь есть предложения в Python, то я тоже в порядке. Мне просто нужно увидеть, возможно ли это сделать или нет.
Существует способ получить числа возможных смежных подмножеств с помощью математической формулы.
(n⋅ (n + 1)) / 2
для ex A [] = [ 1,2,3] подмассивы: [1], [2], [3], [1,2], [2,3], [1,2,3]
(3 ⋅ (3 + 1)) / 2, то есть 6 непустых вложенных массивов