PHP练习-移动数组内的0到最后并保持其他元素顺序不变

2020-08-14 20:32 By "Powerless" 2836 1 1

思路分析

循环数组,计算0的数量,如果数组内元素不为0则跟前面的0进行交换

$arr = [0,14,9,1,4,6,-3,2,0,99,13,20,0,17,15,3,0];

//方法一
function moveZeroes1($nums)
{
    $zeroNum = 0;
    $numsSize = count($nums);
    for ($i = 0; $i < $numsSize; $i++) {
        if ($nums[$i] == 0) {
            $zeroNum++;
        } else {
            if ($zeroNum != 0) {
                $nums[$i - $zeroNum] = $nums[$i];
                $nums[$i] = 0;
            }
        }
    }
    return $nums;
}
print_r(moveZeroes1($arr));


//方法二
function moveZeroes2($nums)
{
    $j = 0;
    $numsSize = count($nums);
    for ($i = 0; $i < $numsSize; $i++) {
        if ($nums[$i] != 0) {
            $nums[$j++] = $nums[$i];
        }
    }
    while ($j < $numsSize) {
        $nums[$j++] = 0;
    }
    return $nums;
}
print_r(moveZeroes2($arr));


评 论

辛福 3 2020-08-29 12:09
0yJYYF5P

View in WeChat

Others Discussion

  • 初识七层、五层、四层网络协议
    Posted on 2021-04-09 16:52
  • Redis各种数据类型的使用场景举例分析【二】
    Posted on 2018-11-22 10:30
  • QPS、TPS、RT、吞吐量到底是什么
    Posted on 2020-02-02 01:15
  • 2018年云计算热词
    Posted on 2019-06-12 18:19
  • Linux工具 - NM目标文件格式分析
    Posted on 2019-04-24 10:29
  • ACID原则
    Posted on 2020-12-17 16:36
  • 前端知识体系精简-Css
    Posted on 2018-03-28 18:34
  • 浏览器访问网站经历的步骤-Html
    Posted on 2018-11-28 18:48