当前位置: 面试刷题>> 移动零问题 (经典算法题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);
```
**码小课网站中有更多相关内容分享给大家学习**,包括但不限于数组操作、算法优化等,欢迎访问码小课网站深入学习。