标签: 双指针

9 篇文章

最长算术
Original Link 思想: 双指针。 快指针 i 作为某一连续区间的右端点,慢指针 j 作为该区间的左端点; 初始化设差值为 t = a[1] - a[0],每当 a[i] - a[i - 1] == t 时更新区间, 更新区间时,i 不断右移,直到不满足 a[i] - a[i - 1] =…
火星购物
Original Link 思想: 前缀和,双指针。 快指针 i 作为某一分割区间的右端点,慢指针 j 作为该区间的左端点; 当 a[i] - a[j + 1] >= m 时,需要将 j 右移,直到满足 a[i] - a[j] <= m, 此时判断 a[i] - a[j] 的值,若满足 …
最长连续不重复子序列
Original Link 思想: 双指针。 快指针 i 作为某一连续最长不重复区间的右端点,慢指针 j 作为该区间的左端点; 遍历数组 a[i],用 vis[a[i]] 标记当前区间已经存在的数。 当 vis[a[i]] > 1 时: 说明当前区间存在重复数字,则 j 不断右移,期间 vis…
字符串删减
Original Link 思想: 双指针。 快指针 i 作为某一连续的 "xxx" 区间的右端点,慢指针 j 作为该连续的 "xxx" 区间的左端点; 遍历字符串 s,当 s[i] == 'x' 时,将 j = i 标记为左端点,i 不断…
1. 基础算法初识
1.1快速排序 思想: 先取一个中间的任意值x,将需要排序的序列划分为左右两个区间 以递增为例,使得左区间的数都满足q[i]<=x右区间的数都满足q[i]>=x 然后对左右两个区间分别排序最终得到递增序列 模板 int q[N]; //q[N]为需要排序的序列,需初始化为全局变量 voi…
1824. 钻石收藏家(双指针模板)
1824. 钻石收藏家(双指针模板) 原题链接 奶牛贝茜非常喜欢闪闪发光的东西,她会在业余时间开采钻石。 她收藏了 N 颗大小不等的钻石,她想将其中的一些摆放在牛棚的展示柜当中。 为了使展示柜中的钻石尺寸大小相似,她不会将两颗尺寸大小相差超过 K 的钻石同时放在柜子中(刚好相差 K,则没有问题)。 …
3493. 最大的和 (滑动窗口)
3493. 最大的和 (滑动窗口) 原题链接 描述 给定一个长度为 n 的正整数数列 a1,a2,…,an。 初始时,数列中的每个元素要么处于可选状态,要么处于不可选状态。 你可以选择一个长度恰好为 k 的区间 [i,i+k−1],使得 ai∼ai+k−1 这 k 个元素的状态全部变为可选。 请问,…