一道php面试题

作者: dino.ma 分类: PHP 发布时间: 2019-07-16 15:52
//将大于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);

发表评论

电子邮件地址不会被公开。 必填项已用*标注