小白也刷题-----leetcode去除数组中指定元素

**Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.**
本题目本意是给出一个数组,然后再给出一个数字,如果给出的数组中存在给出的数字,就把他们全部取出,然后返回新的数组的长度。
题目给了提示,提示可以使用双指针来解决这个问题,即一个指针从前遍历一个指针从后遍历。
下面我们看看代码怎么写:

int removeElement(int* nums, int numsSize, int val) {
    int *numsl;                  /*定义一个新指针,用来存放取入数组的尾指针*/
    numsl=nums+numsSize-1;       /*将尾指针的值赋给定义好的指针变量*/
    int i=0;                     /*定义整型变量用来存储被取出元素的个数*/
    for(int j=0;j<numsSize;j++)  /*循环遍历这个数组*/
    {
        if((*nums)==val)         /*此处进行判断,若有相同元素*/
        {
           *nums=*numsl;        /*将尾部元素赋给现指针所指元素*/
           numsl--;            /*尾指针前移一位*/
           i++;                /*记录去除元素的个数*/ 
           continue;           /*进入下一次循环*/
        }

    nums++;                   /*继续向前遍历*/
    }
    return numsSize-i;         /*返回新的数组长度*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值