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

需要固定一个指针,再遍历另一个指针的都可以用双指针方法

对 👍,你理解得很对。

两数之和(Two Sum)这种问题里,外层确定一个数,内层要找另一个数,其实就可以用 双指针 来代替内层的遍历。

我给你举个最简单的例子:

问题

给定一个有序数组 nums = [1, 2, 3, 4, 6, 8],找出和为 7 的两个数。


方法 1:双重循环(O(n²))

nums = [1, 2, 3, 4, 6, 8]
target = 7for i in range(len(nums)):for j in range(i+1, len(nums)):if nums[i] + nums[j] == target:print(nums[i], nums[j])

输出:

3 4

方法 2:双指针(O(n))

因为数组有序,可以用双指针:

nums = [1, 2, 3, 4, 6, 8]
target = 7left, right = 0, len(nums) - 1  # 左右指针
while left < right:s = nums[left] + nums[right]if s == target:print(nums[left], nums[right])breakelif s < target:   # 和小了,左边右移left += 1else:              # 和大了,右边左移right -= 1

输出:

3 4

所以:

  • 两层循环是“i 定第一个数,j 遍历后面所有数”;

  • 双指针是“i 定第一个数,另一个直接用 left/right 搜索”。

👉 当你只需要两个数时,用双指针比两层循环更快。

要不要我帮你画一下这两个解法的“指针移动过程”,一步步对比?

http://www.dtcms.com/a/359513.html

相关文章:

  • 分布式锁和分布式事务
  • 刷算法题-数组-02
  • Wend看源码-marker(RAG工程-PDF文件解析)
  • isp图像处理--bayer Binning
  • UVM APB 验证 VIP Agent 逻辑架构与数据流图
  • 大话 IOT 技术(1) -- 架构篇
  • Week 14: 深度学习补遗:迁移学习
  • 设计模式在Java中的应用:从单例模式到工厂模式的全面解析!
  • C++11——万能模板及完美转发
  • redis详解 (最开始写博客是写redis 纪念日在写一篇redis)
  • 雪花算法实现分布式环境下的高效动态ID生成
  • 扩展:如何设计与实现一个微服务架构下的跨服务异常处理适配器?
  • redis----zset详解
  • 数值分析——非线性方程与方程组的数值解法之二分法
  • 创意无界:云渲染如何让视觉创作触手可及
  • 责任链模式实践-开放银行数据保护及合规
  • 模型系列(篇三)-Llama
  • 分布式事务相关
  • 【MYSQL】从混乱到清晰:联合查询帮你打通数据孤岛
  • Python 实战:内网渗透中的信息收集自动化脚本(6)
  • React前端开发_Day11
  • Pytest+Selenium4 Web自动化测试框架(三日速通)
  • 数据中心网络实现梳理
  • 变频器实习总结14 电子元件中的内部参考电压 Type-c口对于BMS开发的优点
  • Caffeine TimerWheel时间轮 深度解析:O(1)复杂度增删和触发时间事件
  • 2025.8.31基于UDP的网络聊天室项目
  • 数值分析——非线性方程与方程组的数值解法之迭代法
  • Nginx虚拟主机配置
  • 从RNN到BERT
  • 北斗导航 | GNSS定位模式技术总结:原理、分类与应用实践