题解 | #数组元素处理#

数组元素处理

https://www.nowcoder.com/practice/bb840c11be674d01b582847a6921d384

#include <iostream>
using namespace std;

void func(int* p, int n);

int main() {

    int arr[6] = { 0 };
    for (int i = 0; i < 6; i++) {
        cin >> arr[i];
    }

    func(arr, 6);

    for (int i = 0; i < 6; i++) {
        if (i == 5) {
            cout << arr[i] << endl;
        } else {
            cout << arr[i] << " ";
        }
    }

    return 0;
}

// void func(int* p, int n) {//指针指向一个数组 n表示数组的长度

//     // write your code here......
//     for(int i=0;i<n;i++)//循环遍历数组
//     {
//         if(p[i]==0)//检查数组中索引为 i 的元素是否为零
//         {
//             for(int j=i;j<n-1;j++)//将零元素移至末尾
//             {
//                 p[j]=p[j+1];//将元素右移一位
//                 //此时并没有更改最后一位
//             }
//            p[n-1]=0;//将数组中最后一个元素设置为零
//             n--;//更新长度
//         }
//     }

// }

//双指针的方法
void func(int* p, int n) {//指针指向一个数组 n表示数组的长度

    // id指向第一个0所在的位置
    int id=0;
    //i指向游标所在位置 遍历所有元素
    for (int i = 0; i < n; i++) { 
        if(p[i]!=0){//检查数组中索引为 i 的元素是否不为零
            int temp=p[i];
            p[i]=p[id];//数组中非零元素 p[i] 与应该放置的位置 p[id] 进行交换
            p[id++]=temp;//id++后置递增 先计算表达式,后对变量进行++
            //id++;//对 id 指针的后移操作,将 id 加 1。
        }
    }

}

#我的实习求职记录#
全部评论

相关推荐

真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务