顺序表算法 - 移除元素

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-element/description/思路:

代码:

cpp 复制代码
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {
    int src = 0;
    int dest = 0;
    //src小于数组的时候进入循环
    while (src < numsSize) 
    {
        //nums[src]是否等于vcal
        if (nums[src] == val) 
        {
            src++;
        } 
        else
        {
            //先赋值,后自增
            nums[dest++] = nums[src++];
        }
    }
    //此时det指向的位置就是要返回的有效个数
    return dest;
}

运行结果:

从上面的代码我们可以看出不管nums[src]是否等于val,dest都要++,那么我们的代码就可以优化一下。

cpp 复制代码
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {
    int src = 0;
    int dest = 0;
    //src小于数组的时候进入循环
    while (src < numsSize) 
    {
        //nums[src]是否等于vcal
        if (nums[src] != val) 
        {
            nums[dest] = nums[src];
            dest++;
        } 
        src++;
    }
    //此时det指向的位置就是要返回的有效个数
    return dest;
}
相关推荐
故事和你91几秒前
sdut-程序设计基础Ⅰ-实验三while循环(1-10)
开发语言·数据结构·c++·算法·类和对象
爱编码的小八嘎1 分钟前
C语言完美演绎3-7
c语言
再一次等风来3 分钟前
声源定位算法5----SRP-PHAT(1)
算法·信号处理·srp
Yupureki4 分钟前
《算法竞赛从入门到国奖》算法基础:数据结构-并查集
c语言·数据结构·c++·算法
DeepModel5 分钟前
【概率分布】伯努利分布详解
算法·概率论
再一次等风来6 分钟前
声源定位算法5----SRP-PHAT(2)
算法·信号处理·srp·声源定位·gcc-phat
CappuccinoRose13 分钟前
MATLAB学习文档 - 汇总篇
学习·算法·matlab
艾莉丝努力练剑14 分钟前
静态地址重定位与动态地址重定位:Linux操作系统的视角
java·linux·运维·服务器·c语言·开发语言·c++
菜鸟小九15 分钟前
hot100(31-40)
java·算法
gfdhy1 小时前
【Linux】服务器网络与安全核心配置|静态IP+SSH加固+防火墙,公网服务器必学实操
linux·服务器·网络·tcp/ip·算法·安全·哈希算法