LeetCode 移除元素

LeetCode27.移除元素

题目

在这里插入图片描述
在这里插入图片描述

思路

首先,新定义一个数组,用循环将val除外的元素依次赋值到新的数组里,但此时题目要求了必须在原地修改,因此这种方法不适合。
然后我想到了用交换的方法,即把数组中所有的val,交换到数组的最后,用for循环控制数组数组中的元素移动,当元素的值是目标val时,进行替换,此时还要考虑交换之后的这个元素是否还是val,因此做一次i - -;让交换后的元素与val在做一次比较,还要将数组的长度切去一位。

代码

int removeElement(int* nums, int numsSize, int val)
{
    int t;    
    for (int i=0 ; i<numsSize ; i++)
    {
        if(nums[i]==val)             //寻找val的位置
        {
           t=nums[i];                //将val移到数组最后
           nums[i]=nums[numsSize-1]; //把最后的元素移到这
           nums[numsSize-1]=t;       
           i--;                      //将指针前移,以便再次比较
           numsSize--;               //切除数组最后一位
        }  
    }    
    return numsSize;
}

运行结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值