当前位置: 面试刷题>> 移动零问题 (经典算法题500道)


### 题目描述补充 **题目:移动零问题** 给定一个数组 `nums`,编写一个函数将所有 `0` 移动到数组的末尾,同时保持非零元素的相对顺序不变。注意,你必须在原数组上操作,不要使用额外的数组空间,并且你需要尽量地减少数组操作次数。 **示例 1**: ``` 输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0] ``` **示例 2**: ``` 输入: nums = [0] 输出: [0] ``` **注意**: - 你必须原地修改输入数组,而不是使用另一个数组。 - 尽量减少数组操作的次数。 ### PHP 代码示例 ```php function moveZeroes(&$nums) { $zeroCount = 0; $n = count($nums); for ($i = 0; $i < $n; $i++) { if ($nums[$i] == 0) { $zeroCount++; } else { // 将非零元素前移 $nums[$i - $zeroCount] = $nums[$i]; } } // 在数组末尾填充0 for ($i = $n - $zeroCount; $i < $n; $i++) { $nums[$i] = 0; } } // 示例 $nums = [0, 1, 0, 3, 12]; moveZeroes($nums); print_r($nums); ``` ### Python 代码示例 ```python def moveZeroes(nums): zero_count = 0 for i in range(len(nums)): if nums[i] == 0: zero_count += 1 else: nums[i - zero_count] = nums[i] # 在数组末尾填充0 for i in range(len(nums) - zero_count, len(nums)): nums[i] = 0 # 示例 nums = [0, 1, 0, 3, 12] moveZeroes(nums) print(nums) ``` ### JavaScript 代码示例 ```javascript function moveZeroes(nums) { let zeroCount = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] === 0) { zeroCount++; } else { nums[i - zeroCount] = nums[i]; } } // 在数组末尾填充0 for (let i = nums.length - zeroCount; i < nums.length; i++) { nums[i] = 0; } } // 示例 let nums = [0, 1, 0, 3, 12]; moveZeroes(nums); console.log(nums); ``` **码小课网站中有更多相关内容分享给大家学习**,包括但不限于数组操作、算法优化等,欢迎访问码小课网站深入学习。
推荐面试题