c语言给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺 序。
时间: 2024-05-06 20:19:38 浏览: 15
以下是一种可能的 C 语言实现:
```c
void moveZeroes(int* nums, int numsSize){
// 定义两个指针 i 和 j,i 指向当前非零元素应该存放的位置,j 用于遍历数组
int i = 0, j = 0;
for (j = 0; j < numsSize; j++) {
if (nums[j] != 0) {
// 如果当前元素不为 0,则将其移动到 i 指向的位置,并将 i 向后移动一位
nums[i] = nums[j];
i++;
}
}
// 将剩余的位置填充为 0
for (j = i; j < numsSize; j++) {
nums[j] = 0;
}
}
```
该算法的基本思路是维护一个指针 i,表示当前非零元素应该存放的位置。遍历数组,如果当前元素不为 0,则将其移动到 i 指向的位置,并将 i 向后移动一位。最后,将剩余的位置填充为 0。这样,非零元素的相对顺序就得到了保持,且所有 0 都被移动到了数组的末尾。
相关问题
利用c语言给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺 序。
你好,关于你的问题,可以采用双指针的方式。遍历数组,将非零元素放到数组的左侧,将零元素放到数组的右侧。代码如下:
```
void moveZeroes(int* nums, int numsSize){
int left = 0, right = 0;
for (; right < numsSize; right++) {
if (nums[right] != 0) {
nums[left] = nums[right];
left++;
}
}
for (; left < numsSize; left++) {
nums[left] = 0;
}
}
```
这个函数的时间复杂度为O(n),空间复杂度为O(1)。请注意,这个函数不会改变非零元素的相对顺序。
c语言给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对
顺序不变,该怎么做?
可以使用双指针的方法,在遍历数组时,将非零元素依次往数组的头部移动,然后将剩余的位置填充为 0。代码如下:
void moveZeroes(int* nums, int numsSize){
int j = 0;
for (int i = 0; i < numsSize; i++) {
if (nums[i] != 0) {
nums[j++] = nums[i];
}
}
for (int i = j; i < numsSize; i++) {
nums[i] = 0;
}
}
笑话:为什么程序员总是喜欢用草稿纸写代码?因为那样可以使用撤销操作!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)