我把双指针技巧再分为两类,一类是「快慢指针」,一类是「左右指针」.前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环:后者主要解决数组(或者字符串)中的问题,比如二分查找. 一.快慢指针的常见算法 快慢指针一般都初始化指向链表的头结点 head,前进时快指针 fast 在前,慢指针 slow 在后,巧妙解决一些链表中的问题. 1.判定链表中是否含有环 这应该属于链表最基本的操作了,如果读者已经知道这个技巧,可以跳过. 单链表的特点是每个节点只知道下一个节点,所以一个指针的话无法判断链表…
双指针之滑动窗口 (长度最小的子数组:和为s的连续正数序列) 1, 什么时候使用? (与子数组/字符串 有关的题目)~如果给了某个具体值的target,即用滑动窗口 不然就双指针(一般做法,左边< 右边,依据条件左边和右边都不断靠近) 滑动窗口:是双指针的题目找出一个数组中满足一定条件的子数组问题,字符串也可以看成数组.看到子数组问题,就是DP回溯滑动窗口这三种之一  2,滑动窗口的通用框架 1:(例题:209_长度最小的子数组) (做题特点一:题目给定了具体的值target,这个target条…
532. 数组中的K-diff数对 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k. 示例 1: 输入: [3, 1, 4, 1, 5], k = 2 输出: 2 解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5). 尽管数组中有两个1,但我们只应返回不同的数对的数量. 示例 2: 输入:[1, 2, 3, 4, 5],…
前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在: https://github.com/honlu/GoLabuladongAlgorithm https://gitee.com/dreamzll/GoLabuladongAlgorithm 方便的话,请分享,star!备注转载地址!欢迎一起学习和交流! 涉及题目 Leetcode 76. 最小…
在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的责任链,搞清楚了这个,基本就已经梳理清楚sentinel-core模块的大部分内容,顺着这条链路可以继续梳理很多东西. 知其然.知其所以然.而阅读源码就是最好的知其所以然的方式.这一次找了一些空闲时间,捋了一下它的滑动窗口算法,在这里做一个记录.后面会继续去梳理它的令牌算法和漏桶算法. 关于滑动窗口的原理,Sentinel为什么要使用滑动窗口,Sentinel是怎样使用的滑动,直接使用下面这两张图.一图胜千言,一张好的图足以说…
滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用. 算法原理 这里假设业务需要每秒钟限流100次,先来看固定窗口算法的两个问题: 漏检 如下图所示,单看第1秒和第2秒,其请求次数都没有超过100,所以使用固定窗口算法时不会触发限流.但是第1秒的后500ms的请求数加上第2秒的前500毫秒的请求数就超过了100,这时候可能会给系统带来伤害,使用固定窗口算法时不能检测到这种情况. 太刚 针…
双指针基础 双指针(Two Pointers)是面对数组.链表结构的一种处理技巧.这里“指针”是泛指,不但包括通常意义上的指针,还包括索引.迭代器等可用于遍历的游标. 同方向指针 设定两个指针.从头往尾(或从尾到头)遍历,我称之为同方向指针,第一个指针用于遍历,第二个指针满足一定条件下移动.例如 LeetCode题目 283. Move Zeroes: // 283. Move Zeroes void moveZeroes(vector<int>& nums) { ; ;j<nu…
什么是滑动窗口(Sliding Window) The Sliding Problem contains a sliding window which is a sub – list that runs over a Large Array which is an underlying collection of elements. 滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度. 比如找最长的全为1的子数组长度.滑动窗口一般从第一个元…
[TCP协议](3)---TCP粘包黏包 [TCP协议](3)---TCP粘包黏包 有关TCP协议之前写过两篇博客: 1.[TCP协议](1)---TCP协议详解 2.[TCP协议](2)---TCP三次握手和四次挥手 一.TCP粘包.拆包图解 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到字节数是不确定的,故可能存在以下四种情况: 1)服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包 2)服务端一次接受到了两个数据包,D1和D2粘合在一起,称之为T…
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image classification 图像分类 不仅要判断图片中的物体还要在图片中标记出它的位置--Classification with localization定位分类 当图片中有 多个 对象时,检测出它们并确定出其位置,其相对于图像分类和定位分类来说强调一张图片中有 多个 对象--Detection目标检测…