摘要: 单调队列 应用:求滑动窗口的最大最小值 给定一个大小为 n≤106 的数组。 有一个大小为 kk 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。 窗口位置 阅读全文
posted @ 2021-05-20 18:02 JK~ 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 单调栈 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 输入格式 第一行包含整数 N,表示数列长度。 第二行包含 N 个整数,表示整数数列。 输出格式 共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。 阅读全文
posted @ 2021-05-20 17:17 JK~ 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k 个插入的数后面的数; 在第 k 个插入的数后插入一个数。 现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。 注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 阅读全文
posted @ 2021-05-17 08:22 JK~ 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 离散化 值域比较大 : 0 109 个数少: 0 105 例题 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r]之间的所有数的和。 阅读全文
posted @ 2021-05-16 10:48 JK~ 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 区间合并 应用场景 给定多个区间,如果区间之间有交集那么就结合到一起 给定 nn 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3] 和 [2,6] 可以合并为一个区间[1,6]。 输入格式 第一行包含整数 n。 接下 阅读全文
posted @ 2021-05-15 21:10 JK~ 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 位运算常用的两个操作: n的二进制表示中第k位是几 n = 15 = (1111)2 #include<bits/stdc++.h> //万能头文件 using namespace std; int main() { int n = 10; //1010 for (int k = 3; k >= 0 阅读全文
posted @ 2021-05-14 21:09 JK~ 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 快速选择算法 给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。 输入格式 第一行包含两个整数 n 和 k。 第二行包含 n 个整数(所有整数均在 1∼109范围内),表示整数数列。 输出格式 输出一个整数,表示数列的第 k 小数。 数据范围 1 阅读全文
posted @ 2021-05-13 20:41 JK~ 阅读(87) 评论(0) 推荐(0) 编辑
摘要: ###双指针算法: 核心思想就是缩减时间复杂度 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { 时间复杂度是O(n * n) } } 双指针模板 for (i = 0; j = 0; j < n; j++) { while (j 阅读全文
posted @ 2021-05-13 16:10 JK~ 阅读(96) 评论(0) 推荐(0) 编辑
摘要: ###差分 a1, a2, a3 ...... an a称为b的前缀和 构造b1, b2, b3 ..... bn b称为a的差分 使得 ai = b1 + b2 .... + bi 方法: b1 = a1 b2 = a2 - a1 b3 = a3 - a2 .... bn = an - an-1 阅读全文
posted @ 2021-05-12 20:44 JK~ 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 前缀和: 例如原数组 a1 , a2 , a3 , ..... an 前缀和:Si = a1 + a2 + a3 + ... + ai 1、如何求Si for i = 1; i ⇐ n; i++ s[i] = s[i-1] + ai 2、作用:求数组中某段的合 [l, r] 普通方法时间复杂度是O( 阅读全文
posted @ 2021-05-12 12:24 JK~ 阅读(47) 评论(0) 推荐(0) 编辑