题解 | #序列中删除指定数字#

序列中删除指定数字

https://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7

#include <stdio.h>

int main() {
    int n,num,i,j,k=0;
    scanf("%d",&n);
    int arr[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    scanf("%d",&num);
    for(i=0;i<n;i++)
    {
        if(arr[i]==num)
        k++;
        else
        arr[i-k] = arr[i];
    }
    for(i=0;i<n-k;i++)
    {
        printf("%d ",arr[i]);
    }
}

看取值范围这道题也可以用一个数组来计数,速度最快。

这道题王道数据结构教材上有类似的题,所以直接就回忆起思路了:

删除数组中所有值为num的元素,只需要遍历每个数,用k记录已经删除的元素个数,然后做如下操作:

如果遍历到num,则k++(逻辑上已经删除了,物理上会被后续元素覆盖)

如果遍历到其他数字,则前移k个位置(相当于你在排队的时候你前面走了3个人,你也要往前走3个位置)

全部评论

相关推荐

07-07 11:33
江南大学 Java
已经在暑假实习了&nbsp;,没有明确说有hc,纠结实习到八月份会不会有点影响秋招毕竟感觉今年好多提前批
程序员小白条:92的话准备提前批,其他没必要,没面试机会的,而且你要准备充分,尤其八股和算法题
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:15
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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