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

【JavaScript】数据结构之链表(双指针、滑动窗口)

什么是链表?

  • 多个元素存储的列表
  • 链表中的元素在内存中不是顺序存储的,而是通过“next”指针联系在一起的,这个“next”可以自定义。
  • JS中的原型链原理就是链表结构,是通过__proto__指针联系在一起的。
    在这里插入图片描述
    在这里插入图片描述

双指针形式

  • 对撞指针:一般用于顺序结构中,也称左右指针
    • 对撞指针从两端向中间移动。一个指针从最左端开始,另一个从最右端开始,然后逐渐向中间逼近。
    • 对撞指针的终止条件一般是两个指针相遇( left === right )或者错开(left > right),也可能在循环内部找到结果跳出循环。
  • 快慢指针:又称为龟兔赛跑算法
    • 使用两个移动速度不同的指针在数组或者链表等序列结构上移动。
    • 这种方法对于处理环形链表或者数组非常有用。
  • 背向指针,对向指针(滑动窗口)

滑动窗口

  • 也是通过双指针的思路去解决问题的
  • 窗口的扩张得到结果,窗口的缩小优化结果
  • 思路
    • 右侧指针移位
    • 判断是否符合预期
    • 左侧指针是否需要移位
    • 进入下一次循环

链表和数组的区别

  • 数组是有序存储的,有下标0,1,2,3,在数组中间某个位置删除或添加某个元素,其他元素下标要跟着一起变化。
  • 链表中的元素在内存中不是顺序存储的,而是通过“next”指针联系在一起的。
  • 数组通过下标查找即可;链表每次查找都需要从头开始找。

链表的几种形式

  • 单向链表
    在这里插入图片描述
  • 双向链表
    在这里插入图片描述
  • 环形链表

操作链表

在这里插入图片描述

链表案例

  • instanceof 原理

链表习题

leetcode 链表习题

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PyTorch的特点
  • 编译运行 webAssembly(wasm)
  • C / C++的内存管理
  • 小程序与APP的区别
  • IDEA2023.1添加java虚拟机启动参数,打开断言
  • 与姜妍同款冰箱,容声516WILL养鲜冰箱领“鲜”上市
  • Oracle查询(下)
  • MySQL | 知识 | 从底层看清 InnoDB 数据结构
  • ChromaDB教程_2024最新版(下)
  • jspdf踩坑 htmltocanvas
  • VScode的右下角的“Parsing open files“是什么意思
  • (2)leetcode 234.回文链表 141.环形链表
  • 微信支付开发-后台统计工厂实现
  • 站群服务器是指什么?企业为什么选择站群服务器?
  • 华为HarmonyOS地图服务 11 - 如何在地图上增加点注释?
  • 【Linux系统编程】快速查找errno错误码信息
  • express如何解决request entity too large问题
  • leetcode-27. Remove Element
  • Mysql5.6主从复制
  • node-glob通配符
  • 初识 beanstalkd
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 技术:超级实用的电脑小技巧
  • 前嗅ForeSpider教程:创建模板
  • 使用agvtool更改app version/build
  • 消息队列系列二(IOT中消息队列的应用)
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (20050108)又读《平凡的世界》
  • (C语言)fread与fwrite详解
  • (C语言)二分查找 超详细
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (ZT)出版业改革:该死的死,该生的生
  • (搬运以学习)flask 上下文的实现
  • (苍穹外卖)day03菜品管理
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)stm32之通信协议
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net framework4与其client profile版本的区别
  • .NET Micro Framework 4.2 beta 源码探析
  • .Net Winform开发笔记(一)
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /*在DataTable中更新、删除数据*/
  • @JSONField或@JsonProperty注解使用
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建