1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| 思路: 遍历数组,如果为0,查询下一个数字,循环直到遍历到末尾
代码: /** * @param Integer[] $nums * * @return NULL */ function moveZeroes(&$nums) { $j = 0; foreach ($nums as $k => $num) { // 内部遍历数组, 每次遍历输出一个不为0的数字 for ($i = $j; $i < count($nums); $i++) { // 每次记录最新的下标, 下次遍历从新的下标开始 $j = $i; $num = $nums[$i];
// 返回不为0的数字 if ($num != 0) { break; } }
// 如果$j == count($nums),表示数组已经完成遍历 // 所有的非0数字已经移动到了数组的前面,剩下的数字用0填充就行 if ($j < count($nums)) { $nums[$k] = $num; $j++; } else { $nums[$k] = 0; } }
return $nums; }
|