题解 | #数组元素处理#

数组元素处理

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

1. 解法1:两层for循环遍历

void func(int* p, int n) {

    // write your code here......
    
    int temp;
    for (int *q1 = p; q1 != p + n; ++q1)
    {
        if (*q1 == 0)
        {
            for (int *q2 = q1; q2 != p+n-1; ++q2)
            {
                temp = *q1;
                *(q2) = *(q2+1);
            }
            *(p+n-1) = 0; 
        }
    } 
}

碰到非0的元素整体把后面的元素前移。

2. 解法2:双指针

void func(int* p, int n) {

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

    int *q1 = p;
    int cnt = 0;
    for (int i = 0; i < n; ++i)
    {
        if(*p != 0)
        {
            *q1 = *p;
            ++q1;
            ++cnt;
        }
        p++;
    }
    for (int i = cnt; i < n; ++i)
    {
        *q1 = 0;
        ++q1;
    }

}

使用双指针,p是fast,q1是slow,p一直移动, 如果p的值不是0,赋值给q1, q1也移动,q1要确保前面都是非零值,p遍历完以后,q1后面的所有元素全部赋值为0。像题解一样交换零也是可以的

C++题解 文章被收录于专栏

记录在牛客网用C++刷题的题解思路

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4341次浏览 75人参与
# AI面会问哪些问题? #
28026次浏览 559人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15276次浏览 221人参与
# 你的实习产出是真实的还是包装的? #
20248次浏览 342人参与
# 找AI工作可以去哪些公司? #
9210次浏览 239人参与
# 春招至今,你的战绩如何? #
65577次浏览 583人参与
# 厦门银行科技岗值不值得投 #
8054次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
9043次浏览 311人参与
# 中国电信笔试 #
32021次浏览 292人参与
# 你做过最难的笔试是哪家公司 #
33775次浏览 238人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340878次浏览 2175人参与
# 哪些公司真双非友好? #
69630次浏览 289人参与
# 阿里笔试 #
178680次浏览 1317人参与
# 机械人避雷的岗位/公司 #
62704次浏览 393人参与
# 小马智行求职进展汇总 #
25133次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14734次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22098次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26263次浏览 310人参与
# 应届生第一份工资要多少合适 #
20691次浏览 86人参与
# 沪漂/北漂你觉得哪个更苦? #
9939次浏览 193人参与
# 聊聊你的职场新体验 #
336515次浏览 1895人参与
# HR最不可信的一句话是__ #
6306次浏览 114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务