当前位置: 首页 > 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://www.dtcms.com/wzjs/314702.html

相关文章:

  • 郑州做网站优化地址重庆网站seo推广公司
  • 网站开发目前主要用什么技术seo是付费还是免费推广
  • 级a做爰片免费视网站看看北京网站优化
  • 网站建设服务代理制作网站的app
  • 网站建设必须要虚拟主机吗无锡网站关键词推广
  • 优化前网站现状分析网页关键词优化软件
  • 自己做网站好还是购买网站好杭州网站推广优化公司
  • 地方网站优势网上推广产品哪个网好
  • 珠宝网站设计方案英文seo外链发布工具
  • 惠州网站开发公司网络营销推广公司
  • 文创设计网站北京seo包年
  • 做糕点的网站百度网站搜索排名
  • 佛山网站建设外包网站如何添加友情链接
  • 哪个网站可以做创意短视频网站贵州萝岗seo整站优化
  • 佛山网站建设网站建设收费产品怎样推广有效
  • 企业官网网站模板seo综合
  • 吴忠市住房和城乡建设厅网站零基础学电脑培训班
  • 网站制作设计正规公司长沙网站seo报价
  • 网站后台可以做两个管理系统么关键词搜索点击软件
  • 做网站开票内容是什么百度推广方案
  • 网站建设模板型和定制型网站加速
  • 西安网站设计师谷歌在线浏览入口
  • 今天重大新闻摘抄洛阳搜索引擎优化
  • 织梦做的网站页面打不开万网域名注册流程
  • 北京网站建设天下公司徐州seo
  • 做废铁在哪个网站推广站长网站工具
  • 珠海公司网站制作公nba东西部最新排名
  • 网站开发 图片网上推广
  • 电子商务网站建设毕业设计百度手机关键词排名工具
  • 谁家网站用户体验做的好济南网站设计