牛客网——序列中删除指定数字

简介: 牛客网——序列中删除指定数字

前言


今天笔者学了有序序列插入一个数组,和各位分享一下。

一、序列中删除指定数字


题目来源:

序列中删除指定数字_牛客题霸_牛客网

二、解题步骤


1.分析问题


本道题主要是在一个有序序列里删去一个指定数字,这就要我们去比对了。

2.错误代码如下


我最开始的思路:

我想先顺序查找,找到一样的了交换到下一位,最后输出的时候我输出少一位把最后那个给去掉

#include<stdio.h>
int main(){
    int n=0,a=0,b=0;
    int arr[51]={0};
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d ",&arr[i]);  //循环输入构成数组
    }
    scanf("%d",&a);
    for(int j=0;j<n;j++){
        if(a==arr[j]){        //找出输入整数a的位置
            b=arr[j];         //接下来的步骤是交换位置   
            arr[j]=arr[j+1];
            arr[j+1]=b;
        }
    }
        for(int k=0;k<n-1;k++){        //n-1是为了少输出一位,达到删去效果
            printf("%d ",arr[k]);
        }
    return 0;
}

887aa5f2a47f404f88824d9728e5a0fb.jpeg

以上就是我自以为完美的过程。

但是它有一个问题:

image.png

它只能去掉一个需要去掉的数字!!只能比对一个!

因为我们只抓住了第一个就有放开,一直抓着它往后面推,其他的不管一不一样都不管了。

3、修改之后:


其实很简单。

#include<stdio.h>
int main(){
    int n=0,a=0,b=0;
    int arr[51]={0};
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d ",&arr[i]);
    }
    scanf("%d",&a);
    for(int j=0;j<n;j++){
        if(arr[j]!=a)        //一个不等于就输出一个,等于就,不输出直接略过
        printf("%d ",arr[j]);
    }
    return 0;
}

总结


以上就是今天要讲的内容,本文仅仅简单介绍了删除数组中具体数字的方法,如有错误欢迎指正。

相关文章
|
8月前
【C刷题】矩阵相等判断与序列中删除指定的数字(下)
【C刷题】矩阵相等判断与序列中删除指定的数字(下)
|
6天前
题目----序列中删除指定数字
题目----序列中删除指定数字
12 0
【剑指offer】- 数组中重复的数字 -48/67
【剑指offer】- 数组中重复的数字 -48/67
|
19天前
LeetCode(1)-找出数组中重复的数字
LeetCode(1)-找出数组中重复的数字
18 0
|
8月前
|
C语言
【C刷题】矩阵相等判断与序列中删除指定的数字(上)
【C刷题】矩阵相等判断与序列中删除指定的数字(上)
|
9月前
剑指offer-1.找出数组中重复的数字
剑指offer-1.找出数组中重复的数字
15 0
|
10月前
【删除指定数字——leetcode]
【删除指定数字——leetcode]
35 0
|
12月前
剑指offer 45. 数字序列中某一位的数字
剑指offer 45. 数字序列中某一位的数字
40 0
|
12月前
|
C++
剑指offer 01. 找出数组中重复的数字
剑指offer 01. 找出数组中重复的数字
36 0
序列中删除指定的数字(普通法、双指针法)
序列中删除指定的数字(普通法、双指针法)