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

双指针扫描

双指针扫描

  • 用于解决一类基于子段的统计问题
  • 子段:数组中连续的一段(下标范围可以用一个闭区间来表示)
  • 这类题目的朴素做法都是两重循环的枚举,枚举左端点 l l l 、右端点 r ( l ≤ r ) r(l \leq r) rlr
  • 优化手法都是找到枚举中的冗余部分,将其去除
  • 优化策略
    • 固定右端点,看左端点的取值范围
      • 例如左端点的取值范围是一个前缀,可以用 “前缀和” 等算法维护前缀信息
    • 移动一个端点,看另一个端点的变化情况
      • 例如一个端点跟随另一个端点单调移动,像一个 “滑动窗口”
      • 此时可以考虑 “双指针扫描”

总结

  • 区间减法性质
    • 指的是 [ l , r ] [l, r] [l,r] 的信息可以由 [ 1 , r ] 和 [ 1 , l − 1 ] [1, r] 和 [1, l - 1] [1,r][1,l1] 导出
    • 满足区间减法,用前缀和
  • 维护的信息是关于一个点的用双指针扫描
  • 维护的信息是一整个候选集合(多个点)的用单调队列

LeetCode 练习题

  • 167. 两数之和 II - 输入有序数组
  • 1. 两数之和
  • 15. 三数之和
  • 11. 盛最多水的容器

相关文章:

  • Qt应用软件【协议篇】Modbus详细介绍
  • Android 熄屏录音一分钟后没有声音
  • 面试经典150题(93-95)
  • 长度最小的子数组[中等]
  • python学习4
  • 低代码
  • JavaScript-for循环的执行顺序
  • 数论与图论
  • C++ 特殊成员函数:默认构造函数、默认析构函数、复制构造函数、赋值运算符
  • 华为C++笔试--拓扑排序
  • html css实现钟表简单移动
  • 山海鲸可视化:工厂运营的智慧之眼
  • Bug: git stash恢复误drop的提交
  • 25考研北大软微该怎么做?
  • mysql 正则表达式用法(一)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 345-反转字符串中的元音字母
  • angular组件开发
  •  D - 粉碎叛乱F - 其他起义
  • k8s 面向应用开发者的基础命令
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Puppeteer:浏览器控制器
  • Spark RDD学习: aggregate函数
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用权重正则化较少模型过拟合
  • 用jquery写贪吃蛇
  • 责任链模式的两种实现
  • 栈实现走出迷宫(C++)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Maven错误Error executing Maven
  • #define,static,const,三种常量的区别
  • #HarmonyOS:基础语法
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (LeetCode 49)Anagrams
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (分类)KNN算法- 参数调优
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转载)Linux网络编程入门
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net 路由处理厉害了
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • /bin、/sbin、/usr/bin、/usr/sbin