<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dreamcodee的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dreamcodee</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dreamcodee]]></copyright><item><title><![CDATA[Builder建造者设计模式秒懂]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/142182700</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/142182700</guid><author>dreamcodee</author><pubDate>Thu, 12 Sep 2024 18:16:55 +0800</pubDate><description><![CDATA[builder]]></description><category></category></item><item><title><![CDATA[ETCD-基础学习使用]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/142092622</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/142092622</guid><author>dreamcodee</author><pubDate>Tue, 10 Sep 2024 10:58:18 +0800</pubDate><description><![CDATA[etcd的单机部署、基本命令学习]]></description><category></category></item><item><title><![CDATA[ETCD-Linux环境单机安装简易教程]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/141642684</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/141642684</guid><author>dreamcodee</author><pubDate>Wed, 28 Aug 2024 16:28:50 +0800</pubDate><description><![CDATA[etcd-linux快速安装]]></description><category></category></item><item><title><![CDATA[Hive的安装和部署]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/126074923</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/126074923</guid><author>dreamcodee</author><pubDate>Sat, 30 Jul 2022 18:15:24 +0800</pubDate><description><![CDATA[hive 快速部署 ]]></description><category></category></item><item><title><![CDATA[Docker一键部署mysql数据库]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/126045775</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/126045775</guid><author>dreamcodee</author><pubDate>Thu, 28 Jul 2022 22:51:28 +0800</pubDate><description><![CDATA[docker 、 mysql]]></description><category></category></item><item><title><![CDATA[Trie字典树]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118892270</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118892270</guid><author>dreamcodee</author><pubDate>Mon, 19 Jul 2021 11:37:25 +0800</pubDate><description><![CDATA[问题定义：快速存储和查找字符串集合的数据结构。

查找是否存在或有多少个。
过滤敏感词
没有标记 或者 走不通  说明不存在这个单词。






创建字典树：创建一个roo根节点全局使用，遍历字符串，往下生成子节点。
class TrieNode{
  TrieNode next[]; //下一层     这里可以用map，敏感词过滤
  int end; //判断以这个点结尾的数量

  public TrieNode(TrieNode[] next, int end) {
      this.ne.]]></description><category></category></item><item><title><![CDATA[拓扑排序复习]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118786459</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118786459</guid><author>dreamcodee</author><pubDate>Fri, 16 Jul 2021 10:41:55 +0800</pubDate><description><![CDATA[问题本质：有向无环图的宽度优先遍历。
本质：拓扑图的最短路 就是 最熟悉的DP。
规定：每条边都是从起点指向终点。无逆序。
算法思路:

入度为0的点全部作为起点.
一个入读数组d[];入度数组在加边的时候初始化。
遍历d数组，if(d[i]==0)那么这个点入队。
然后bfs。
队列里的次序就是拓扑排序。


拓扑排序 不唯一。

static void bfs(){
    for(int i= 1;i&lt;=N;i++) if(d[i]==0) Q[++tt] = i;  //把入度为0 的真正的.]]></description><category></category></item><item><title><![CDATA[树状数组C]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118695479</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118695479</guid><author>dreamcodee</author><pubDate>Tue, 13 Jul 2021 11:14:11 +0800</pubDate><description><![CDATA[作用：用于单点修改，以及动态前缀和统计。
​进阶作用：差分树+状数组 -&gt;  2个单点修改变区间修改，前缀和变单点访问。
瓶颈： 无法维护区间属性，只能使用线段树解决。


代码短，运行效率高，能用这个就不用线段树。


O  logn 。

给某个位置上的数加上一个数。  单点修改。

可以转化为修改为任意值。Ologn
树状数组只能加上一个数，不能变成一个数（转化为加上他们的差值）。因为上层都要更新加上这个数。


快速求前缀和。  区间查询，区间修改(用差分)

普通前缀和不支持修改  ，若改 ]]></description><category></category></item><item><title><![CDATA[SPFA最短路算法(稀疏图的更优选择)(允许负权)(邻接表)(简单)]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118695043</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118695043</guid><author>dreamcodee</author><pubDate>Tue, 13 Jul 2021 11:02:59 +0800</pubDate><description><![CDATA[问题定义：求1号点到所有点的最短路径


时间复杂度：平均Om 最差On*m 适合稀疏图(邻接表建图方式  前面文章有提到)


算法思想

把1号点加入队列（数组模拟队列，前面有提）。
不断的取点，不断的循环所有边，更新所有的点。 很像堆dij
退出条件是等所有的最短距离都无法更新的时候，队列为空。(队列只是个更新容器)



队列里面方的是：距离1号点距离变小的点


代码：
  static int spfa(){
      Arrays.fill(dist,0x3f3f3f3f);
     ..]]></description><category></category></item><item><title><![CDATA[迪杰斯特拉算法dijkstra(单源最短路问题)(贪心)]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118693824</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118693824</guid><author>dreamcodee</author><pubDate>Tue, 13 Jul 2021 10:39:54 +0800</pubDate><description><![CDATA[最短路问题（有边权问题，无负环，无权图就BFS即可 01边权使用双端队列BFS）
​	难点：抽象建图，如何把题意变为点和边。

无向图也是一种特殊的有向图，算法不变。
如果存在重边，必须保留最短的那条重边。
建图有两种方式，之前的文章已经有提过 （建图不用new,耗费时间长）

邻接表 ：适合稀疏图 和 树  ( O mlogn)
邻接矩阵 ：适合稠密图   (O n^2)
选择哪种方式则根据题目 给定数据范围推出。


由于dijk算法是基于贪心的算法，因此禁止负环的出现。



稠密图 On^2：  (]]></description><category></category></item><item><title><![CDATA[二分 yyds]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118568149</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118568149</guid><author>dreamcodee</author><pubDate>Thu, 08 Jul 2021 10:35:19 +0800</pubDate><description><![CDATA[确定一个区间，使得目标值一定在区间中。


找一个性质，满足可以使区间一分为二。

性质具有二段性。
答案是二段性的分界点。



小心越界left + （(right - left)  &gt;&gt; 1）


利用好TreeSet  添加与查找都是Ologn  免写二分
//TreeSet是有序的Set集合
treeSet.ceiling(X); //直接找大于X的第一个数  找不到返回null
treeSet.floor(X);//找小于X的第一个数
//其余和普通Set一样。
//不要用int..]]></description><category></category></item><item><title><![CDATA[模拟栈与队列]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118480268</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118480268</guid><author>dreamcodee</author><pubDate>Mon, 05 Jul 2021 08:59:17 +0800</pubDate><description><![CDATA[栈 stk 与队列 Q


栈
int stk[N] ,tt=-1 //tt 代表栈顶(目前位置)   浪费一个0 即可。
//插入  push
stk[++tt] = x;  //++tt不要搞错，tt有值的
//弹出   pop
tt--;
//查询   peek
stk[tt];
//判断栈是否为空
if(tt&gt;=0) //不空  tt=0为空，0不存东西。

题：


中缀表达式求值


利用双栈，一个存运算符，一个存值。


每次运算符栈顶元素对比此操作符优先级小于等于栈顶，全部计算，注意小]]></description><category></category></item><item><title><![CDATA[邻接表建图与遍历]]></title><link>https://blog.youkuaiyun.com/dreamcodee/article/details/118479798</link><guid>https://blog.youkuaiyun.com/dreamcodee/article/details/118479798</guid><author>dreamcodee</author><pubDate>Mon, 05 Jul 2021 08:54:15 +0800</pubDate><description><![CDATA[**邻接表 ** h[]
​    （存储 图 和 树）。


相当于n个单链表。


head 就变为一个 h[]  数组。 每一个结点都是头结点。


树是一种特殊的图：无环连通图。


无向图就是一种特殊的有向图，无向图建两条边即可。


NE[x]存储此点一步能到的所有点的idx下标，一般用头插法。
E[x] 是 这条边的真正下标； h 存所有节点的头结点(下一个点中的一个)取出来再用NE遍历。
NE 和 E 都是边的数量。如果是双向的就*2；
static int h[];   //头节点
sta]]></description><category></category></item></channel></rss>