数据结构与算法
逆风微笑的魔法师
一个人热爱逆向的小学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Trie字典树
问题定义:快速存储和查找字符串集合的数据结构。 查找是否存在或有多少个。 过滤敏感词 没有标记 或者 走不通 说明不存在这个单词。 创建字典树:创建一个roo根节点全局使用,遍历字符串,往下生成子节点。 class TrieNode{ TrieNode next[]; //下一层 这里可以用map,敏感词过滤 int end; //判断以这个点结尾的数量 public TrieNode(TrieNode[] next, int end) { this.ne.原创 2021-07-19 11:37:25 · 144 阅读 · 0 评论 -
二分 yyds
确定一个区间,使得目标值一定在区间中。 找一个性质,满足可以使区间一分为二。 性质具有二段性。 答案是二段性的分界点。 小心越界left + ((right - left) >> 1) 利用好TreeSet 添加与查找都是Ologn 免写二分 //TreeSet是有序的Set集合 treeSet.ceiling(X); //直接找大于X的第一个数 找不到返回null treeSet.floor(X);//找小于X的第一个数 //其余和普通Set一样。 //不要用int..原创 2021-07-08 10:35:19 · 136 阅读 · 0 评论 -
模拟栈与队列
栈 stk 与队列 Q 栈 int stk[N] ,tt=-1 //tt 代表栈顶(目前位置) 浪费一个0 即可。 //插入 push stk[++tt] = x; //++tt不要搞错,tt有值的 //弹出 pop tt--; //查询 peek stk[tt]; //判断栈是否为空 if(tt>=0) //不空 tt=0为空,0不存东西。 题: 中缀表达式求值 利用双栈,一个存运算符,一个存值。 每次运算符栈顶元素对比此操作符优先级小于等于栈顶,全部计算,注意小原创 2021-07-05 08:59:17 · 147 阅读 · 0 评论 -
邻接表建图与遍历
**邻接表 ** h[] (存储 图 和 树)。 相当于n个单链表。 head 就变为一个 h[] 数组。 每一个结点都是头结点。 树是一种特殊的图:无环连通图。 无向图就是一种特殊的有向图,无向图建两条边即可。 NE[x]存储此点一步能到的所有点的idx下标,一般用头插法。 E[x] 是 这条边的真正下标; h 存所有节点的头结点(下一个点中的一个)取出来再用NE遍历。 NE 和 E 都是边的数量。如果是双向的就*2; static int h[]; //头节点 sta原创 2021-07-05 08:54:15 · 95 阅读 · 0 评论
分享