<?php
function &permuteUnique($items) {
sort($items);
$size = count($items);
$return = array();
while (true) {
$return[] = $items;
$invAt = $size - 2;
for (;;$invAt--) {
if ($invAt < 0) {
break 2;
}
if ($items[$invAt] < $items[$invAt + 1]) {
break;
}
}
$swap1Num = $items[$invAt];
$inv2At = $size - 1;
while ($swap1Num >= $items[$inv2At]) {
$inv2At--;
}
$items[$invAt] = $items[$inv2At];
$items[$inv2At] = $swap1Num;
$reverse1 = $invAt + 1;
$reverse2 = $size - 1;
while ($reverse1 < $reverse2) {
$temp = $items[$reverse1];
$items[$reverse1] = $items[$reverse2];
$items[$reverse2] = $temp;
$reverse1++;
$reverse2--;
}
}
return $return;
}
permuteUnique(array(1,2,3,4,5))
?>
- Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.7 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
preferences:
267.48 ms | 406 KiB | 342 Q