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

学校网站建设全包百度网站验证方法

学校网站建设全包,百度网站验证方法,威海住房和城乡建设局官方网站,珠海横琴天聚建设工程有限公司网站关于每个知识点的例题 可以自己看力扣标准题解。也可以在哔哩哔哩上看。想看我的,就到github 看 - 库 ,介绍里写的算法讲解那些,里面有知识点,有题库。题库,每天都发题,可能跟博客的进度不一样。因为我上传…

一、了解双指针

双指针(Two Pointers)是一种常用的算法技巧,通常用于解决数组或链表中的问题。它的核心思想是使用两个指针(或索引)在数据结构中遍历或搜索,从而高效地解决问题。双指针技巧通常可以将时间复杂度从 (O(n^2)) 优化到 (O(n))。

推荐先看这个视频,再看下面文章


二、 双指针的常见应用场景

  1. 有序数组的两数之和

    • 给定一个有序数组和一个目标值,找到两个数使它们的和等于目标值。
    • 使用双指针,一个指向数组开头,一个指向数组末尾,根据和的大小移动指针。
  2. 移除数组中的重复元素

    • 给定一个有序数组,原地移除重复元素。
    • 使用双指针,一个指针用于遍历数组,另一个指针用于记录非重复元素的位置。
  3. 滑动窗口问题

    • 给定一个数组和一个窗口大小,找到满足条件的子数组。
    • 使用双指针表示窗口的左右边界,根据条件滑动窗口。
  4. 链表的快慢指针

    • 判断链表是否有环,或找到链表的中间节点。
    • 使用快慢指针,快指针每次移动两步,慢指针每次移动一步。

二、 双指针的技巧总结

1. 对撞指针

对撞指针 是一种常用的双指针技巧,通常用于解决数组或字符串中的问题。它的核心思想是使用两个指针,一个从数组的起始位置(左指针)开始,另一个从数组的末尾位置(右指针)开始,通过向中间移动来解决问题。


1.1、对撞指针的核心思想

  1. 指针的初始化

    • 左指针 l 指向数组的起始位置(l = 0)。
    • 右指针 r 指向数组的末尾位置(r = nums.size() - 1)。
  2. 指针的移动规则

    • 根据问题的要求,决定左指针或右指针的移动方向。
    • 通常,左指针向右移动,右指针向左移动。
  3. 终止条件

    • 当左指针和右指针相遇或交叉时,算法结束。

1.2、对撞指针的总结

  1. 适用场景

    • 有序数组中的两数之和、三数之和。
    • 反转数组或字符串。
    • 验证回文串。
    • 盛最多水的容器。
  2. 核心思想

    • 使用两个指针从数组的两端向中间移动,通过比较指针指向的元素来解决问题。
  3. 时间复杂度

    • 通常为 (O(n)),因为每个元素最多被访问一次。
  4. 空间复杂度

    • 通常为 (O(1)),只使用了常数级别的额外空间。

2. 快慢指针

快慢指针 是一种常用的双指针技巧,通常用于解决链表或数组中的问题。它的核心思想是使用两个指针,一个移动速度快(快指针),一个移动速度慢(慢指针),通过它们的相对移动来解决问题。


2.1、快慢指针的核心思想

  1. 快指针和慢指针的移动速度

    • 快指针每次移动两步。
    • 慢指针每次移动一步。
  2. 相对速度

    • 快指针和慢指针的相对速度是 1,即快指针每次比慢指针多走一步。
  3. 终止条件

    • 当快指针到达链表末尾(或数组末尾)时,慢指针通常指向目标位置。

2.2、快慢指针的总结

  1. 适用场景

    • 链表中的环检测、中间节点查找。
    • 数组中的重复元素删除、重复数查找。
  2. 核心思想

    • 快指针和慢指针以不同的速度移动,通过相对速度解决问题。
  3. 时间复杂度

    • 通常为 (O(n)),因为每个元素最多被访问两次。
  4. 空间复杂度

    • 通常为 (O(1)),只使用了常数级别的额外空间。

3. 滑动窗口

3.1、滑动窗口的两种情况

3.1.1、情况1:固定大小的窗口
  • 特点
    • 窗口的大小是固定的。
    • 通常用于解决需要在固定长度的子数组或子串中查找满足条件的问题。
  • 示例问题
    • 在一个数组中,找到长度为 k 的连续子数组,使得子数组的和大于 target
  • 解决方法
    • 初始化左指针 l = 0,右指针 r = k - 1
    • 计算窗口内的和,如果满足条件,返回结果。
    • 如果不满足条件,移动窗口:l++r++,继续检查新的窗口。
3.1.2、情况2:可变大小的窗口
  • 特点
    • 窗口的大小不固定。
    • 通常用于解决需要在不定长度的子数组或子串中查找满足条件的问题。
  • 示例问题
    • 在一个数组中,找到和大于等于 target 的最短连续子数组。
  • 解决方法
    • 初始化左指针 l = 0,右指针 r = 0
    • 右指针 r 向右移动,扩大窗口,直到窗口内的和满足条件。
    • 左指针 l 向右移动,缩小窗口,尝试找到更短的满足条件的子数组。

3.4、滑动窗口的核心思想

  1. 窗口的定义

    • 窗口是数组或字符串中的一个连续子区间,由左指针 l 和右指针 r 定义。
  2. 窗口的移动

    • 扩大窗口:右指针 r 向右移动,增加窗口的大小。
    • 缩小窗口:左指针 l 向右移动,减少窗口的大小。
  3. 条件的判断

    • 在窗口移动的过程中,根据问题的要求判断当前窗口是否满足条件。

4. 分离指针

分离指针 是一种双指针技巧,通常用于解决涉及多个数组或链表的问题。它的核心思想是使用两个指针分别遍历不同的数组或链表,通过它们的相对移动来解决问题。


4.1、分离指针的常见应用场景

  1. 合并两个有序数组或链表

    • 将两个有序数组合并为一个有序数组。
    • 将两个有序链表合并为一个有序链表。
  2. 查找两个数组的交集

    • 找到两个有序数组的交集。
  3. 判断一个数组是否是另一个数组的子序列

    • 判断一个数组是否是另一个数组的子序列。
  4. 滑动窗口问题

    • 使用两个指针分别表示窗口的左右边界。

4.2、分离指针的核心思想

  1. 指针的初始化

    • 每个指针分别指向一个数组或链表的起始位置。
  2. 指针的移动规则

    • 根据问题的要求,决定每个指针的移动方向。
    • 通常,指针的移动方向是单向的(从左到右)。
  3. 终止条件

    • 当某个指针到达数组或链表的末尾时,算法结束。

4.3、分离指针的总结

  1. 适用场景

    • 合并两个有序数组或链表。
    • 查找两个数组的交集。
    • 判断一个数组是否是另一个数组的子序列。
  2. 核心思想

    • 使用两个指针分别遍历不同的数组或链表,通过比较指针指向的元素来解决问题。
  3. 时间复杂度

    • 通常为 (O(m + n)),其中 (m) 和 (n) 是两个数组或链表的长度。
  4. 空间复杂度

    • 通常为 (O(1)),只使用了常数级别的额外空间。

三、 双指针的时间复杂度

  • 双指针通常可以将时间复杂度从 (O(n^2)) 优化到 (O(n)),因为每个指针最多遍历数组或链表一次。

四、例题

  • 对撞指针
    力扣hot100两数之和
  • 快慢指针
    力扣hot100移动零
  • 滑动窗口
    力扣LCR长度最小的子数组
  • 分离指针
    力扣21、合并2个有序链表

文章转载自:

http://Far3nzhX.skdsL.cn
http://IZqwRLfp.skdsL.cn
http://QSafry55.skdsL.cn
http://cnhqucX3.skdsL.cn
http://7dK1w2hU.skdsL.cn
http://LAuNoFFj.skdsL.cn
http://E341hEls.skdsL.cn
http://s2A0Cu5S.skdsL.cn
http://NURoLLEU.skdsL.cn
http://HOtyRiKi.skdsL.cn
http://agSr1khU.skdsL.cn
http://bzaxx8Th.skdsL.cn
http://GInIeQ97.skdsL.cn
http://wIoZO8gY.skdsL.cn
http://zHO7a3fH.skdsL.cn
http://DatwEA1c.skdsL.cn
http://Zu14qmqf.skdsL.cn
http://giGBaaXz.skdsL.cn
http://4XjSdJBY.skdsL.cn
http://CbUUwyvl.skdsL.cn
http://peUEyuKg.skdsL.cn
http://J5HOD31J.skdsL.cn
http://jFVVZF9x.skdsL.cn
http://LPJcHauD.skdsL.cn
http://ydiTw3ho.skdsL.cn
http://SC9O6gER.skdsL.cn
http://UK13rbiR.skdsL.cn
http://qMDXWqx9.skdsL.cn
http://Qv7ydcC3.skdsL.cn
http://dypLS0yN.skdsL.cn
http://www.dtcms.com/wzjs/768481.html

相关文章:

  • 菏泽网站建设培训学校建设网站有什么作用
  • 东莞网站seo做模板网站
  • 如何用front怕个做网站上海闵行建设局官方网站
  • 公司向要做一个网站要怎么做建设厅执业资格注册中心网站
  • 石家庄做网站排名公司哪家好免费建站网站一区黄在线国产
  • 手机网站建设维护协议梅州建站联系方式
  • 查询网站收录命令网站运营方案案例
  • 建网站销售常见问题求个网站你明白的 知乎
  • 陕西省建设厅执业资格注册中心网站报名建站极速通
  • 推进政务服务网站一体化建设js不能打开插件wordpress
  • 网站不想被百度抓取网站开发前景如何
  • 营销型网站上海制作个人建个网站需要多少钱
  • org的域名网站淮北工程建设公司
  • 简述网站的四种常见结构宁波网络seo推广
  • 网站主要盈利模式中国工程建设领域网站
  • 成都网站建设收费明细ui设计接单价目表
  • 荆州建设网站wordpress 显示全文
  • WordPress mk主题湖南正规关键词优化报价
  • 高端网站开发如何推广网址
  • 合肥制作网站单位有哪些手机优化
  • 无棣县建设局网站中文网页设计模板下载
  • 网站优化公司哪家好安卓app开发模板
  • 可以直接打开网站的方法dede调用网站名称
  • 太仓做网站的智能手机软件开发
  • 网站以什么名字备案重庆在线高校
  • 做网站怎样产生效益免费设计商标
  • 局域网站建设直播网站怎样建设
  • 网站建设和客户面谈制作网站程序
  • 海淀网站建设服务互联网公司的网络运营
  • 网站建设空间使用标准中国电力建设企业协会网站