题解 | #数组元素处理#

数组元素处理

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

没有用到双指针,也没有其他题解的图 思维也很简单,适合小白理解

void func(int* p, int n) 
{

    // write your code here......
    for(int i=0; i<n; i++)
    {
        if(p[i]==0)
        {
            for(int j=i; j<n-1; j++)
                p[j] = p[j+1];//把字符往前移动
            p[n-1] = 0;//将最后一个设置为0
            n--;//缩短数组遍历长度
            /*感谢大神的意见,对于多个0可加上如下注释代码*/
            //if(p[i]==0)
            //{
            //	i--;
            //}
        }
    }

}
全部评论
你这个没考虑连续两个零的情况吧?
2 回复 分享
发布于 2022-04-02 12:02
之前写了个多余的变量,已删,有什么问题欢迎回复
1 回复 分享
发布于 2022-02-13 17:02
连着两个0不行的
2 回复 分享
发布于 2023-03-07 14:32 广东
有大神能分析下复杂度吗?
1 回复 分享
发布于 2022-03-19 13:58
这个代码连0测试不过。我写了一个,但是复杂度不好 void func(int* p, int n) { // write your code here...... int zeroIdx = 0; int zeroCnt = 0; while (1) { bool findFlag = false; for(int i = zeroIdx; i < n - zeroCnt; i++){ if (p[i] == 0) { zeroCnt++; zeroIdx = i; for (int j = i; j < n - zeroCnt; j++) { p[j] = p[j + 1]; } p[n - zeroCnt] = 0; findFlag = true; break; } } if (!findFlag) { break; } } }
点赞 回复 分享
发布于 02-21 15:36 浙江
我求求你们了,好好看看算法行不行,我明明写了注释的
点赞 回复 分享
发布于 02-21 21:04 广东
来这里练算法,就知道复制运行,注释都不会去掉
点赞 回复 分享
发布于 02-21 21:04 广东

相关推荐

沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
21
3
分享
牛客网
牛客企业服务