用c语言实现给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
时间: 2024-05-09 08:18:23 浏览: 93
python 移动零,给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
5星 · 资源好评率100%
这个问题可以使用双指针法进行解决。
首先定义两个指针:j和i,初始时,i和j都指向数组的开头。
我们遍历整个数组,当遇到非零元素时,将其赋值到nums[j]上,同时i和j均向后移动一位。
当遇到0时,i向后移动一位,但是j不移动,这是因为我们需要将0移动到数组的末尾,j继续指向当前非零元素应该所在的位置。
最终,当i遍历完整个数组时,j之后的所有元素均应该是0,因为i和j之间的所有元素都是非零元素,而j之后的所有元素都被i赋值为了0.
下面是该算法的C实现代码:
```
void moveZeroes(int* nums, int numsSize){
int i,j;
j=0;
for(i=0;i<numsSize;i++){
if(nums[i]!=0){
nums[j]=nums[i];
j++;
}
}
for(;j<numsSize;j++){
nums[j]=0;
}
}
```
需要注意的是,我们将0移动到数组的末尾时,只需要将nums[i]赋值为0即可,不需要进行j的移动操作。
阅读全文