【力扣刷题实战】(顺序表)移除元素

大家好,我是小卡皮巴拉

文章目录

目录

[力扣题目: 移除元素](#力扣题目: 移除元素)

题目描述

[示例 1:](#示例 1:)

[示例 2:](#示例 2:)

解题思路

具体思路

题目要点

完整代码

[兄弟们共勉 !!!](#兄弟们共勉 !!!)


每篇前言

博客主页:小卡皮巴拉

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。

力扣题目: 移除元素

原题链接:移除元素

题目描述

给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于 val的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k

示例 1:

输入: nums = 3,2,2,3, val = 3
输出: 2, nums = 2,2,_,_
解释: 你的函数函数应该返回 k = 2, 并且 nums中的前两个元素均为 2。

你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。

示例 2:

输入: nums = 0,1,2,2,3,0,4,2, val = 2
输出: 5, nums = 0,1,4,0,3,_,_,_
解释: 你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。

注意这五个元素可以任意顺序返回。

你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。

解题思路

我们在这里用到双指针法来进行数组去重:给定一个排序数组,需要在原地删除重复出现的元素,使每个元素只出现一次,并返回移除后数组的新长度。可以使用快慢指针来实现,快指针用于遍历数组,慢指针用于指向已处理元素的最后一个位置。

具体思路

初始化双指针

  • 使用两个指针 dstsrc,都初始化为0。
  • dst 指针用于记录当前不等于 val 的元素应该放置的位置(即目标位置)。
  • src 指针用于遍历整个数组。

遍历数组

  • 遍历数组 nums,使用 src 指针从0开始遍历。
  • 如果 nums[src] 不等于 val,则将 nums[src] 的值赋给 nums[dst],并且 dst 指针向后移动一位(dst++,在Python中表示为 dst += 1)。
  • 如果 nums[src] 等于 val,则只移动 src 指针,dst 指针保持不变。

返回结果

  • 遍历完成后,dst 指针的值即为不等于 val 的元素数量。
  • 返回 dst 即可。

题目要点

原地操作:不增加额外空间,直接在原数组上修改。

双指针:利用两个指针遍历数组,一个记录结果,一个用于遍历。

顺序可变:输出元素可不必保持原顺序。

返回数量:最终返回非目标值的元素数量。

完整代码(C语言)

cs 复制代码
int removeElement(int* nums, int numsSize, int val) 
{
    int dst,src = 0;
    while(src < numsSize)
    {
        //src的值为val,src往后走
        //src的值不为val,src赋值给dst,src和dst都往后走
        if(nums[src] != val)
        {
            nums[dst] = nums[src];
            dst++;
        }
        src++;
    }
    return dst;
}

兄弟们共勉 !!!

码字不易,求个三连

抱拳了兄弟们!

相关推荐
2401_872418785 小时前
算法入门:数据结构-堆
数据结构·算法
xwz小王子7 小时前
手术机器人登上Science Robotics:2毫米纤细手臂,从3厘米切口完成腰椎神经减压
算法·机器人
黎阳之光8 小时前
视频孪生智护供水生命线:黎阳之光赋能医疗与园区水务高质量升级
运维·物联网·算法·安全·数字孪生
Black蜡笔小新8 小时前
自动化AI算法训练服务器DLTM制造业AI质检工作站助力制造业实现AI智检
人工智能·算法·自动化
嵌入式小能手8 小时前
飞凌嵌入式ElfBoard-进程间的通信之命名管道
linux·服务器·算法
啦哈拉哈9 小时前
Leetcode题解记录-hot100(81-100)
算法·leetcode·职场和发展
csdn_aspnet9 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
诸葛务农9 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)
java·开发语言·算法
snow@li9 小时前
AI:理解 大数据、算法、算力、电力、生成式AI、token 之间的关系
大数据·人工智能·算法
小智老师PMP9 小时前
零基础能不能考PMP?零基础专属学习路径+全套扶持体系
学习·算法·职场和发展·软件工程·求职招聘·敏捷流程