题解 | 数组元素处理

数组元素处理

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

#include 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) {

int id = 0;     //先进行初始化  //始终指向数组中第一个0
for(int i = 0; i < n; i++)
{     
    if(p[i] != 0)
    {
        int temp = p[i];    //若i所指向的数组中的数不为0,执行
        p[i] = p[id];       //将指向id的数组中内容与i位置内容进行交换,
                            //最初i与id都在第一位,因此无法交换不操作
        p[id++] = temp;    //然后id所在位置右移,再进行下一轮,也就是i位置到下一位
    }                   
    //若i位置数组内容为0,直接不操作,也就是说此时id已经指向0,继续执行i下一位判断

//也就是说id一直指向第一个0的位置,当不为0,i与id位置一起右移,进行位置交换, //也就是说id位置一直在往最右端推。当为0时,id不动等待下一个位置判断, //除非后边都是0,只要有不为0的位置,i与id位置的内容就交换,然后id右移也就是最新的第一个0的位置 //最终实现0都在数组末尾

}

// write your code here......

}

全部评论
牛逼
点赞 回复 分享
发布于 昨天 15:09 上海

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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