一道php面试题
//将大于0的元素前移并不改变元素顺序 时间复杂度为O(n) 空间复杂度为O(1)
function itemMove(array $array) : array
{
if (empty($array)) {
return [];
}
$size = count($array);
$i = $size - 1;
$index = 0;
while ($i >= 0) {
if ($array[$i] != 0) {
$array[$i + $index] = $array[$i];
$i--;
} else {
$index++;
$i--;
}
}
for ($i = 0; $i < $index; $i++) {
$array[$i] = 0;
}
return $array;
}
$array = [1,0,2,0,4,0,0,3,0,0];
echo '<pre>';
itemMove($array);