简单的算法问题3——元素移除

简单的算法问题3——元素移除

以下题目全是用c++写的…
以下算法题均来自计蒜客

题目

给定一个数组和一个数(该数不一定在数组中),从数组里删掉这个数字,返回剩下的数组长度。
如:A[] = {1, 2, 3, 4, 5}A[]=1,2,3,4,5,要删除数字 3,那么返回数组长度为 4。
亲爱的小伙伴们,题目是不是很简单呢?
提示:int removeElement(int A[], int n, int elem)
其中,n代表数组长度,elem代表要删掉的元素。

输入格式

第一行输入一个数 n(1≤n≤100),
接下来一行 n 个整数,表示数组 A的所有元素A (0≤A≤100),
接着输入要删除的元素elem(0≤elem≤100)。

输出格式

形如:

输出一个整数,表示剩余数组长度。

输入

2
3 3
3

输出

0

刨坑点

1.这道题怎么说来着,就是线性表的删除,但是呢,个人觉得有点坑,因为如果是我们删除最后一个线性表元素呢?你还用for(int j=n-1;j>-1;j--) {A[j]=A[j+1];n--;} 前提是我是取到n的值以后才去创建的A数组,n就代表了数组的MaxSize,如果你第1次要删除的是最后一个元素。还有你最后一个元素和倒数第二个元素相同的时候,你怎么思考呢?我个人呢,采用了不作为的态度,直接暴力解决,if(A[i]==elem){A[i]=NULL;n--;}

2.这道题如果用C++中的vector做的话超级简单,还不用考虑那么多…

代码

#include <iostream>
using namespace std;
int removeElement(int A[],int &n, int elem);
int main(){
    int n;
    int elem;
    cin>>n;
    int *A=new int[n];
    for(int i=0;i<n;i++){
        cin>>A[i];
    }
    cin>>elem;
    cout<<removeElement(A,n,elem);
    return 0;
}
int removeElement(int A[],int &n,int elem){
    if(n>0&&n<101){
        for(int i=n-1;i>-1;i--){
            if(A[i]>-1&&A[i]<101){
                while(A[i]==elem){
                    A[i]=NULL;
                    n--;
                    }
                }

            } 
        return n;   
        }
    }

这里写图片描述

测试成功~!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值