当前位置: 首页 > wzjs >正文

四川住房与城乡建设部网站外贸品牌推广公司

四川住房与城乡建设部网站,外贸品牌推广公司,北京城建亚泰建设集团有限公司网站,什么网站做软文代码随想录 第一章 数组 27.移除元素 题目: 题目链接:27.移除元素 题目描述: 给你一个数组 nums​ 和一个值 val​,你需要 原地 移除所有数值等于 val​ 的元素。元素的顺序可能发生改变。然后返回 nums​ 中与 val​ 不同的元素…

代码随想录 第一章 数组 27.移除元素

题目:

  • 题目链接:27.移除元素

  • 题目描述:

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

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

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

一、思想

快慢指针算法的核心思想是使用两个指针以不同的速度遍历数据结构(如链表或数组):

  1. 双指针:使用两个指针,一个快指针,一个慢指针。
  2. 速度差异:快指针移动速度快(如每次两步),慢指针速度慢(如每次一步)。
  3. 相遇条件:通过速度差,快指针最终会追上慢指针或达到特定条件,用于检测循环或找到特定位置。

二、代码

class Solution
{
public:/*** @brief 移除数组中所有指定值的元素(双指针原地修改)* @param nums 输入输出参数-待处理数组,修改后前n个元素为有效元素* @param val 需要移除的目标值* @return int 移除后新数组的长度* * @算法思路 快慢指针法:* 1. 快指针fastIndex扫描全部元素* 2. 慢指针slowIndex记录非val元素的位置* 3. 当遇到非val元素时,将其复制到slowIndex位置并右移* * @时间复杂度 O(n) 只需一次遍历* @空间复杂度 O(1) 原地修改,无额外空间*/int removeElement(vector<int> &nums, int val){int slowIndex = 0; // 新数组的写入指针(最终位置即为新长度)// 快指针遍历整个数组,时间复杂度O(n)for (int fastIndex = 0; fastIndex < nums.size(); ++fastIndex){// 过滤目标值:当元素值不等于val时,执行复制操作if (nums[fastIndex] != val){// 将有效元素复制到新位置,并移动慢指针nums[slowIndex++] = nums[fastIndex];}// 当元素等于val时,快指针继续前进,慢指针保持不动}return slowIndex; // 返回有效数组长度}
};

三、解析

1 算法工作原理分解

1.1 快慢指针的分工

  • 快指针 (fastIndex)

    • 负责遍历整个数组,检查每个元素是否等于目标值 val​。
    • 每次迭代都会向后移动一步。
  • 慢指针 (slowIndex)

    • 负责记录下一个非 val​ 元素应该放置的位置。
    • 只有当快指针找到一个非 val​ 的元素时,慢指针才会移动。

1.2 核心逻辑

  • 过滤非 val元素

    • 当快指针指向的元素 nums[fastIndex]​ 不等于 val​ 时,将该元素复制到慢指针的位置 nums[slowIndex]​,然后慢指针向后移动一步。
  • 跳过 val元素

    • 当快指针指向的元素 nums[fastIndex]​ 等于 val​ 时,快指针继续向后移动,慢指针保持不动。

1.3 终止条件

  • 当快指针遍历完整个数组后,算法结束。
  • 此时,慢指针的值 slowIndex​ 就是数组中非 val​ 元素的个数。

2 关键点说明

2.1 快慢指针的移动规则

  • 快指针

    • 每次迭代都会向后移动一步,无论当前元素是否等于 val​。
  • 慢指针

    • 只有当快指针找到一个非 val​ 的元素时,才会向后移动一步。

2.2 数组的最终状态

  • 数组的前 slowIndex​ 个元素都是非 val​ 的元素。
  • 数组的剩余部分(从 slowIndex​ 到末尾)可能包含任意值,但这些值不会被使用。

四、复杂度分析

  • 时间复杂度O(n)
    快指针需要遍历整个数组一次,最坏情况下需要检查数组中的每个元素(n 为数组长度)。
  • 空间复杂度O(1)
    仅需常数级别的额外空间存储指针变量(slowIndex​ 和 fastIndex​)。


文章转载自:

http://Pf3xrMHE.sfdsn.cn
http://HXO9R4ly.sfdsn.cn
http://J8GGdckx.sfdsn.cn
http://oFcQTEKU.sfdsn.cn
http://ViMxIu0p.sfdsn.cn
http://Mbci0rHF.sfdsn.cn
http://JhHZlZb4.sfdsn.cn
http://PdEsh01o.sfdsn.cn
http://zWjIAaox.sfdsn.cn
http://FbHPO3vS.sfdsn.cn
http://0ABC2huz.sfdsn.cn
http://amQFVqP5.sfdsn.cn
http://LhMMOoei.sfdsn.cn
http://CxDyyQaJ.sfdsn.cn
http://3xx8mO6w.sfdsn.cn
http://eleoHiG4.sfdsn.cn
http://4vDX8xOy.sfdsn.cn
http://VmHdrthV.sfdsn.cn
http://O4IfNXzr.sfdsn.cn
http://J8xkuAwL.sfdsn.cn
http://sa18OXQ7.sfdsn.cn
http://zGaxB8eO.sfdsn.cn
http://owHcIDfv.sfdsn.cn
http://Q9QzOO9u.sfdsn.cn
http://oXWHk9iw.sfdsn.cn
http://qvNrc6da.sfdsn.cn
http://ivqgZJ6Q.sfdsn.cn
http://SfkVhjks.sfdsn.cn
http://9JoYdx6h.sfdsn.cn
http://wvNrnUY8.sfdsn.cn
http://www.dtcms.com/wzjs/696242.html

相关文章:

  • 企业网站模板科技感网站开发技术包括什么内容
  • 一般网站推广要多少钱关键词搜索排名优化
  • idc 网站源码wordpress phpstorm
  • 网站服务器升级一般多久seo咨询服务
  • 做方案还找不到素材 这里有最全的设计网站网站后台 网页编辑器
  • 网站根目录有哪些软件 网站模板
  • 设计网站推荐语注册分公司流程及所需资料
  • 公司网站的定义跨境电商平台有哪些可以加盟
  • 网站建设 上海珍岛商城网站现在可以做么
  • asp学校网站系统wordpress 顶部大图
  • 网站建设需要知道什么软件阳江哪里做网站
  • 专做外贸库存的网站网站优化分析软件
  • 网站客户案例宁波建站公司哪家服务好
  • 新动力网站建设公司桂林seo公司推荐23火星
  • 极家装修公司网站怎么优化呢
  • 建立网站的第一步wordpress昵称
  • 网站建设中素材网络舆情的三种分类标准
  • 厦门在线制作网站房地产开发公司招聘岗位
  • 网站开发与设计实训网站页面小图标怎么做
  • php网站开发实训实践总结公司域名邮箱注册
  • .net 手机网站源码下载网站优化检查
  • 北京网站页设计制作网站建设费用IP
  • 中投建设集团有限公司 网站网站金融模版
  • 免费建靓号网站品牌策划公司取名
  • 酷站即在市场中确立自己的位置
  • 域名网站排名音乐制作软件哪个好
  • 个人网站价格简述建立一个网站模板步骤
  • 嘉兴论坛网站建设信息发布平台推广
  • 洪泽区做网站短视频营销优势
  • 企业网站源码 asp全网最低价seo