![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
最爱晴天和自己
等待
展开
-
美团笔试题练习
学习原创 2022-09-16 16:43:12 · 364 阅读 · 0 评论 -
Trie字符串统计
Trie树又称字典树、单词查找树。是一种能够高效存储和查找字符串集合的数据结构。代码中,我们用到了son[N][26],cnt[N],idx;我们将26个英文字母转换成数0-26,N代表当前节点,son[N][]代表当前节点的儿子。如果没有的话,可以等于++idx。Trie树本质上是一颗多叉树,对于字母而言最多有26个子结点。所以这个数组包含了两条信息。比如:son[1][0]=2表示1结点的一个值为a的子结点为结点2;如果son[1][0] = 0,则意味着没有值为a子结点。这里的son[N]原创 2022-04-10 16:21:38 · 1291 阅读 · 0 评论 -
滑动窗口---单调队列
题目:154. 滑动窗口 - AcWing题库#include<iostream>using namespace std;const int N=1e6+10;int a[N],q[N];int main(){ int n,k; scanf("%d%d",&n,&k); for(int i=0;i<n;i++) scanf("%d",&a[i]); //思路是,把无用的元素删掉,然后构造单调队列,此时答案就是两头元素 in...原创 2022-03-22 23:03:33 · 147 阅读 · 0 评论 -
单调栈--
题目描述给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。输入格式第一行包含整数N,表示数列长度。第二行包含N个整数,表示整数数列。输出格式共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。数据范围1≤N≤1051≤数列中元素≤109样例输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2盗图:AcWing 830. 单调栈--图解,详细注释 - AcWing #inc原创 2022-03-21 21:45:03 · 79 阅读 · 0 评论 -
区间合并----
思路:由于涉及区间,所以使用pair数组进行存储;对于输入的左右区间[st,ed],先对区间的所有左端点进行排序,然后进行遍历.若区间st值小于上个区间的ed,如[1,3],[2,4],说明两个区间有交集,则合并为一个区间,区间的ed取两区间中较大的那个,变为[1,4];若区间st值大于上个区间的ed值,如[5,6],[8,9],很明显,两区间没有交集,则单独成立一个区间。#include<iostream>#include<vector>#include<原创 2022-03-15 23:04:32 · 62 阅读 · 0 评论 -
二进制位数为1的个数
题目链接:801. 二进制中1的个数 - AcWing题库方法一:使用lowbit进行操作lowbit操作每次取一个数字最后一个1后面的所有位,每次减去lowbit得到的数字,直到数字减到0,就得到了最终1的个数.如一个数字原码是10001000,他的负数表示形势是补码,就是反码+1,反码是01110111,加一则是01111000,二者按位与得到了1000,然后我们用原码减去1000,得到10000000,再次使用lowbit操作,就找到新的1,知道变为0结束代码:#include&原创 2022-03-15 22:54:53 · 582 阅读 · 0 评论 -
区间和---离散化
题目:传送门:802. 区间和 - AcWing题库题解:区间和,使用离散化的原因为存储的下标过大,如果直接开这么大的数组,根本不现实,第二个原因,本文是数轴,要是采用下标的话,可能存在负值,所以也不能,这个题难点就在于映射关系;思路:将分散的值映射到连续的数组内Pair对象add内存储的是输入的{x,c}值;x表示坐标值,c表示加上的数alls数组内存储的是从add数组内择出来的坐标值,此时的数组内值是无序混乱的,需要对它进行排序去重;a数组内存储最终的c值,根据all原创 2022-03-09 22:54:56 · 115 阅读 · 0 评论 -
二维差分矩阵
差分就是前缀和的逆运算:方法:a为原数组,b为差分数组a[3][3]=b[1][1]+b[1][2]+b[1,3]+b[2][1]+b[2][2]+b[2][3]+b[3][1]+b[3][2]+b[3][3];a[2][2]=b[1][1]+b[1][2]+b[2][1]+b[2][2];b[3][3]=a[3][3]-a[3][2]-a[2][3]+a[2][2]若b数组的b[i][j]的修改,会影响到a数组中从a[i][j]及往后的每一个数。所以若要对a[x1][y1]原创 2022-03-08 11:12:49 · 130 阅读 · 0 评论