前置知识

C 和 C++ 的数组、指针。

什么是双指针

严格的来说,双指针只能说是是算法中的一种技巧。

双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。

双指针问题套路

通俗的说,就是在数组遍历中,我们使用两个指针进行操作。所以双指针问题基本有以下几个细节:

1、双指针的初始位置。根据双指针的分类,有两种可能。具体看下面的介绍。

2、双指针的移动方法。根据双指针的分类,有两种可能。具体看下面的介绍。

3、遍历的结束条件。根据双指针的分类,有两种可能。具体看下面的介绍。

对撞指针

对撞指针是指在数组中,将指向最左侧的索引定义为左指针(left),最右侧的定义为右指针(right),然后从两头向中间进行数组遍历。快速排序就是典型的双指针问题。

我们假设数组名字为 nums,数组长度为 n,数组首元素对应的位置为 0。

代码细节

指针初始位置

左指针(left)一般指向数组的第一个元素。即 left = 0。

右指针(right)一般指向数组的第一个元素。即 right = n-1。

指针移动方法

左指针(left)向右边

算法技巧——双指针算法相关推荐

  1. 【算法】双指针算法 ( 有效回文串 II )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  2. 【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )

    文章目录 一.双指针算法分类 二.相向双指针示例 ( 有效回文串 ) 一.双指针算法分类 面试时经常遇到 限制算法复杂度为 O(n)O ( n )O(n) 的情况 , 就需要使用以下算法 : 双指针算 ...

  3. python算法技巧——贪心算法练习及掌握

    目录 1. 设计findcontentchildren(greedy, size)来判断出饼干可以满足多少小孩: 2. 设计carpooling(trips, capacity)判断是否一个车能接送所 ...

  4. 【算法】快速选择算法 ( 数组中找第 K 大元素 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  5. 双指针算法(四):力扣 88.合并两个有序数组 | 经典例题

    题目描述 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 初始化 nums1 和 nums2 的元素数量分别为 m 和 ...

  6. 双指针算法基本原理和实践

    原文作者:huansky 原文地址:双指针算法基本原理和实践 什么是双指针 双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的 ...

  7. 【Java版算法思想】双指针算法

    一.什么是双指针算法? 严格的来说,双指针只能说是是算法中的一种技巧. 双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进 ...

  8. 【带你装逼带你飞】吐血总结了这五大常用算法技巧,让你在同事/面试官面前惊艳全场!

    对于算法技巧,之前的文章也写过一些算法技巧,不过相对零散一些,今天我把之前的很多文章总结了下,并且通过增删查改,给大家总结一些常用的算法解题技巧,当然,这些也不是多牛逼的技巧,不过可以让你的代码看起来 ...

  9. PAT甲级1084 Broken Keyboard:[C++题解]字符串处理、双指针算法

    文章目录 题目分析 题目来源 题目分析 来源:acwing ac代码1:双指针算法 读入两个字符串a和b,用两个指针i和j分别遍历a.b.如果a[i] ==b[j],说明键盘没坏,j往后移动一个:如果 ...

最新文章

  1. LeetCode 850. Rectangle Area II
  2. 搞Java的年薪 40W 是什么水平?
  3. linux 基础学习之目录与文件处理命令
  4. Transposed Convolution 反卷积
  5. [BZOJ5286][洛谷P4425][HNOI2018]转盘(线段树)
  6. git clone失败的问题,网络问题
  7. redis发布订阅者
  8. 在WPF控件上添加Windows窗口式调整大小行为
  9. 使用ppmap检测和利用XSS漏洞
  10. 超级好用的谷歌浏览器页面翻译插件(Mac和Win系统通用)
  11. oracle数据库基本语句
  12. css怎么写仿粗体,在CSS中字体加粗要怎么做?
  13. java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
  14. MAC 安装homebrew流程
  15. [TI TDA4 J721E] TDA4平台 相关技术文章 汇总
  16. build.prop文件详细赏析
  17. 【MySQL】MacM1下的MySQL安装与配置
  18. IntelliJ IDEA快速入门 | 第三十篇:如何来自定义模板呢?
  19. js逆向--有道翻译
  20. SSM---MyBatis

热门文章

  1. 小软件获取QQ好友是否隐身对你可见
  2. 苹果手机sim卡无效怎么办_苹果手机扬声器没声音怎么办
  3. mysql8密码规则_mysql8.0用户密码设置注意事项
  4. [ctf web]SSTI PHP的模板注入SSTI (smarty+Twig) 以及[BJDCTF2020]Cookie is so stable
  5. 网店系统_优惠券系统业务逻辑架构设计_OctShop免费开源商城系统
  6. 【CSDN|每日一练】影分身
  7. 推荐好用的天气插件(天气网)
  8. [Android设计模式之旅]——责任链模式
  9. RSTP(快速生成树协议)
  10. win10卸载电脑管家就蓝屏_告别哭脸!Win10蓝屏崩溃问题可以这么解决